рдореБрдЭреЗ рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рдорд┐рд▓рд╛ рдЬрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдкрд░ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рд╢реНрди рдореЗрдВ рдХреЛрдб:
@Component({selector: "signup-comp"})
@View({
directives: [CORE_DIRECTIVES, FORM_DIRECTIVES],
template: `
<form #f="form" (ng-submit)='onSignUp(f.value)'>
<div ng-control-group='credentials' #credentials="form">
Login <input type='text' ng-control='login'>
Password <input type='password' ng-control='password'>
</div>
<div *ng-if="!d.valid">Credentials are invalid</div>
<div ng-control-group='personal'>
Name <input type='text' ng-control='name'>
</div>
<button type='submit'>Sign Up!</button>
</form>
`
})
рдХреБрдВрдЬреА ng-if
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ !d.valid
ред d
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдкреВрд░реНрдг рдкреНрд▓рдВрдХрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ <div ng-control-group='credentials'></div>
рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ ng-if
рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдореИрдВрдиреЗ рдореВрд▓ рдХрд╛рд░рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛:
NgControlGroup
рдПрдХ onInit
рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ PromiseWrapper.resolve
рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдХрд╛рдо рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ onInit
рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрджрд┐ onInit
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ AbstractChangeDetector.alreadyChecked
рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдЧрд▓реЗ рдЯрд┐рдХ рдХреЗ рджреМрд░рд╛рди onInit
рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ onInit
рдореЗрдВ NgControlGroup
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рдо рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ,
рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдкрдиреЗ рдЖрдк рд▓реЙрдХ рд╣реЛ рдЧрдИ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕рдорд╛рди рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред
рд╣рдорд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд▓реЙрдХрд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред
_рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдПрдХ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЧрдИ рд╣реИред_
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рдореВрд▓ рдХрд╛рд░рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛:
NgControlGroup
рдПрдХonInit
рд╡рд┐рдзрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛPromiseWrapper.resolve
рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдХрд╛рдо рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИредрд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐
onInit
рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрджрд┐onInit
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛAbstractChangeDetector.alreadyChecked
рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдЧрд▓реЗ рдЯрд┐рдХ рдХреЗ рджреМрд░рд╛рдиonInit
рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐onInit
рдореЗрдВNgControlGroup
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рдо рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ,