рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗрдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдВрдЧреБрд▓рд░ (2+) рдкрд░ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдФрд░ рд╕рдлрд▓ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдереАред рд╕рдВрдХреНрд░рдордг рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕реНрд╡рд░реВрдкрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдХреНрдпреЛрдВрдХрд┐ A1 рдФрд░ A2 + рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ "рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдХреНрд░рдордг рдХреА рд╡реНрдпрдерд╛ рдиреЗ
рд╕реЛрдЪрд╛ рдмреНрд▓реЙрдЧ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реА "рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдпред" рд▓реЗрдХрд┐рди рд╡реЗ рдРрд╕реЗ рд╣рд╛рде рд╣реИрдВ (рдЙрдирдХреЗ рд▓реЗрдЦ рдЕрдзреВрд░реЗ рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИрдВ)ред рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдЦ рдЧреВрдЧрд▓ рдЕрдиреБрд╡рд╛рдж рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЦреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдЦрдХ рдХреА рд╢реИрд▓реА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЗрдЦрдХ рдХреА рд╢реИрд▓реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рдореИрдВ рд▓реЗрдЦ рдХреЗ рдореВрдб рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдВрдЧреБрд▓рд░, рд╣реЗрдмреЗ рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреИрд╕реЗ рдореВрд▓ рд▓реЗрдЦ рдиреЗ рдПрдХ рдмрд╛рд░ рдореЗрд░реА рдорджрдж рдХреА рдереАред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ AngularJS рдореЗрдВ рд╡рд╛рд╣ рдкреНрд░рднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рдЯреВ-рд╡реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ" рд╣реИред рдпрд╣ рдЬрд╛рджреВ рддреБрд░рдиреНрдд рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХреЗ рдкреНрдпрд╛рд░ рдореЗрдВ рдкрдбрд╝ рдЧрдпрд╛, рдФрд░ рдЙрдмрд╛рдК рдкреЗрдЬ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ (рдУрд╣, рд╣реЙрд░рд░!) рд╡реЗрдм рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рддреБрд░рдиреНрдд рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ jQuery рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрд░реА рдХрдерд╛ рдореЗрдВ рдЧрд┐рд░рддреЗ рд╣реБрдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рд░рд╛рдХреНрд╖рд╕, jQuery рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╕рд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рджреЗрдЦрдХрд░, рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЦреЛрдП рд╣реБрдП рдорд╛рдирд╡-рдорд╣реАрдиреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди рдХрд╛ рдЬрд╛рджреВ рди рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдЕрдзрд┐рд╕реВрдЪрдирд╛рдУрдВ рдФрд░ рдЪрдпрдирд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдерд╛ред рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдХреЗ)ред
Angular2 + рдореЗрдВ, рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ
рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (ngModel рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдлрд╝реНрд░реАрдмреА рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░, рдЕрдзрд┐рдорд╛рдирддрдГ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд╕рд╛рде рдХрд┐ рдпрд╣ рдХреЛрдгреАрдп рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди
A2 + рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
ngModel ред рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ (рдХреЗрд╡рд▓ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдХреЗрддрди рдореЗрдВ) рдХреЗ рд╕рдорд╛рди рд╣реА рдЬрд╛рджреВ рд╣реИред рд▓реЗрдХрд┐рди рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реИ?
рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рд╣реБрдб рдХреЗ рддрд╣рдд, рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ: рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рдЗрд╡реЗрдВрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреЛ-рддрд░рдлрд╛ рдмрдВрдзрди рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рджреНрд╡рд┐рдкрдХреНрд╖реАрдп рдХреЗ рдмрдЬрд╛рдп рджреЛ рдПрдХрддрд░рдлрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ? рдареАрдХ рд╣реИ, рдЪрд▓реЛ рджреЛред
рдФрд░ рддреБрд░рдВрдд рдПрдХ рдЙрджрд╛рд╣рд░рдг:
<input [(ngModel)]="username"> <p>Hello {{username}}!</p>
рд╣рд╛рдВ, рд╣рд╛рдВ, рдпрд╣ 2009 рд╕реЗ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рдЕрджреНрднреБрдд Angular2 рдбреЗрдореЛ рд╣реИред рдХреЛрдИ рдордЬрд╛рдХ рдирд╣реАрдВ, рд╕реБрдВрджрд░ред рдлрд╝реАрд▓реНрдб рдмрджрд▓рддреЗ рд╕рдордп,
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдореЙрдбрд▓ рдореЗрдВ рдЧрд┐рд░рддрд╛ рд╣реИ, рдФрд░ рдлреЙрд░реНрдо рдкрд░ рд╕реНрд╡рд╛рдЧрдд рд╕рдВрджреЗрд╢ рдореЗрдВ рддреБрд░рдВрдд рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ Angular2 рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рдИрд╡реЗрдВрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИред рдФрд░ рд╣рд╛рдБ, рд╡реЗ рдПрдХ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
ngModel рдХреЗ рдмрд┐рдирд╛ рднреА, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
<input [value]="username" (input)="username = $event.target.value"> <p>Hello {{username}}!</p>
рдЖрдЙрдЯрдкреБрдЯ
{{рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо}} рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди
рдЗрдирдкреБрдЯ рдореЗрдВ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ? рдЖрдЗрдП рд╕рдордЭрддреЗ рд╣реИрдВ:
- [рдорд╛рди] = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо" - рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде рд╕рдВрдХреЗрддрди, рдореВрд▓реНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- (рдЗрдирдкреБрдЯ) = "рдПрдХреНрд╕рдкреНрд░реЗрд╢рди" - рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХреЗрддрди, рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЗрдирдкреБрдЯ рдЗрд╡реЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ (рд╣рд╛рдБ, рдРрд╕реА рдХреЛрдИ рдШрдЯрдирд╛ рд╣реИ)ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо = $ event.target.value - рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЗрдирдкреБрдЯ рдИрд╡реЗрдВрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- $ рдШрдЯрдирд╛ рдХреЛрдгреАрдп рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪрд░ рд╣реИ рдЬреЛ рдПрдХ рдкреЗрд▓реЛрдб рд╡рд╣рди рдХрд░рддреА рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдФрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ
рдХреНрдпрд╛ рдпрд╣ рд╕рд╛рдл рд╣реЛ рд░рд╣рд╛ рд╣реИ? рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдПрдВрдЧреБрд▓рд░ рдореЙрдбрд▓ рдХреА
рдпреВрдЬрд╝рд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрдирдкреБрдЯ рдПрд▓рд┐рдореЗрдВрдЯ рдХреА
рд╡реИрд▓реНрдпреВ рдкреНрд░реЙрдкрд░реНрдЯреА (рдореЙрдбрд▓ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рди-рд╡реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред
рд╣рдо рдЕрдкрдиреЗ рддрддреНрд╡ рдХреА
рдЗрдирдкреБрдЯ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рдмрд╛рдВрдзрддреЗ рд╣реИрдВред рдЬреЛ рдореЙрдбрд▓ рдХреЗ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд▓рд┐рдП
$ event.target.value рдХрд╛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
$ Event.target.value рдХреНрдпрд╛ рд╣реИ? рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,
$ рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рднрд░рд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ
InputEventObject рд╣реИ рдЬрд┐рд╕рдореЗрдВ
рд▓рдХреНрд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ DOM рддрддреНрд╡ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ
рдЬрд┐рд╕рдиреЗ рдШрдЯрдирд╛ рдХреЛ
рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ (рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдЗрдирдкреБрдЯ рддрддреНрд╡)ред
рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдкреБрдЯ рддрддреНрд╡ (
$ event.target ) рдХреА рд╕рд╛рдордЧреНрд░реА (
рдореВрд▓реНрдп ) рдХреЛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрдм рд╣рдо рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ "рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди рд╣реИ ред
" рд╕реМрдВрджрд░реНрдп?
рд▓реЗрдХрд┐рди рдХрдм
ngModel рдЦреЗрд▓рдиреЗ рдореЗрдВ рдЖрддрд╛ рд╣реИ? рдЗрдирдкреБрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдорд╛рдВрдЧ рдореЗрдВ рд╣реИред рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред
рдПрдирдореЙрдбреЗрд▓ рдХреЛ рд╕рдордЭрдирд╛
рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
ngModel рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдФрд░ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдзрди рднреА рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░рд╛ ngModel рдЙрджрд╛рд╣рд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛:
<input [ngModel]="username" (ngModelChange)="username = $event"> <p>Hello {{username}}!</p>
рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдПрдХ рдЬреИрд╕рд╛ рд╣реИред
[NgModel] рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред рдПрдХ рдИрд╡реЗрдВрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
(ngModelChange) рджреБрдирд┐рдпрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ DOM рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗрд╡рд▓
$ рдШрдЯрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рди рдХрд┐
$ event.target.value рдХреА ред рдХреНрдпрд╛ рдпрд╣рд╛рдБ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ? рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ,
$ рдШрдЯрдирд╛ рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪрд░ рд╣реИ рдЬреЛ рдПрдХ
рдкреЗрд▓реЛрдб рд╡рд╣рди рдХрд░рддреА рд╣реИред рдЬреЛ рдЪреАрдЬ рдЙрдкрдпреЛрдЧреА рдорд╛рдиреА рдЬрд╛рддреА рд╣реИ рдЙрд╕рдХрд╛ рдирд┐рд░реНрдгрдп рдЕрдВрдЧреБрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ,
ngModelChange рдЖрдВрддрд░рд┐рдХ
$ рдШрдЯрдирд╛ рд╕реЗ
target.value рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╣рдореЗрдВ рд╡рд╣ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдЯреИрдореНрдмреЛрд░рд┐рди рдХреЗред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпреЗ
DefaultValueAccessor рдХреЗ рд╣реИрдВ : рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрдзрд╛рд░ рдбреЛрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ... рдЖрдк рдмрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо, рджреЛ рдмрд╛рд░
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░
ngModel рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдмреЗрдорд╛рдиреА рд╣реИ, рдХреЛрдгреАрдп рдХреЛ рдЫреЛрдЯреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕
[()] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ "рдПрдХ рдмреЙрдХреНрд╕ рдореЗрдВ рдХреЗрд▓рд╛" рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
ngModel рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рдордЭ рдХреЗ рд╕рд╛рдеред рд╕рдорд╛рди рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред
<input [(ngModel)]="username"> <p>Hello {{username}}!</p>
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдПрдБ
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдмрд╕ рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛
рд╣реЛрдЧрд╛ , рдЬреИрд╕реЗ рдХрд┐
ngModel ,
- рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдВрдзрди рджрд░реНрдЬ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: [foo] )
- рдПрдХ рд╣реА рдирд╛рдо рдФрд░ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдмрджрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: fooChange )
- рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╡реЗрдВрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ)
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП AngularJS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ... рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреЛ-рддрд░рдлрд╝рд╛ рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдБ рднреА рд╕рдВрднрд╡ рд╣реЛред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреНрдпрд╛ ngModel рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдж рдореЗрдВ,
рдХрд╕реНрдЯрдо рдкреНрд░рдкрддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛рдЙрдВрдЯрд░ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдФрд░ рдХрд╕реНрдЯрдо рдлрд╝реЙрд░реНрдо рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред
@Component({ selector: 'custom-counter', template: ` <button (click)="decrement()">-</button> <span>{{counter}}</span> <button (click)="increment()">+</button> ` }) export class CustomCounterComponent { counterValue = 0; get counter() { return this.counterValue; } set counter(value) { this.counterValue = value; } decrement() { this.counter--; } increment() { this.counter++; } }
рд╣рдорд╛рд░реЗ рдкрд╛рд╕
рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХрд╛рдЙрдВрдЯрд░ рдШрдЯрдХ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдЗрд╕реЗ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЗрд╕реЗ
рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП,
@Input () рдбреЗрдХреЛрд░реЗрдЯрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ:
@Component() export class CustomCounterComponent { counterValue = 0; @Input() get counter() { return this.counterValue; } ... }
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЛ рдШрдЯрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
<custom-counter [counter]="someValue"></custom-counter>
рдЕрдм рд╣рдореЗрдВ
@Output () рдЗрд╡реЗрдВрдЯ рдХреЛ рдПрдХ рд╣реА рдирд╛рдо (
рдХрд╛рдЙрдВрдЯрд░ ) рдФрд░ рдкреНрд░рддреНрдпрдп
рдЪреЗрдВрдЬ (рдпрд╣
рдкреНрд░рддрд┐рд░реВрдк рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рд╣рд░ рдмрд╛рд░
рдХрд╛рдЙрдВрдЯрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВ
@Output () рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВред рдФрд░ рд╣рдо рдХреБрдЫ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ, рдХрд╛рдЙрдВрдЯрд░ рд╕реЗрдЯрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд░реЛрдХреЗрдВрдЧреЗ рдФрд░ рдПрдХ рдШрдЯрдирд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рджреЗрдВрдЧреЗ:
@Component() export class CustomCounterComponent { ... @Output() counterChange = new EventEmitter(); set counter(val) { this.counterValue = val; this.counterChange.emit(this.counterValue); } ... }
рдпрд╣ рдмрд╛рдд рд╣реИ! рдЕрдм рд╣рдо рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЧреБрдг рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ:
<custom-counter [(counter)]="someValue"></custom-counter> <p>counterValue = {{someValue}}</p>
рдбреЗрдореЛ рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ!
рдлрд┐рд░, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛рдЙрдВрдЯрд░ рдЬреИрд╕реЗ рдПрдХ рдШрдЯрдХ рдХреЛ рдХрд╕реНрдЯрдо рдлрд╝реЙрд░реНрдо рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
ngModel рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдХреЛрдгреАрдп рдЕрдм рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдмреЙрдХреНрд╕ рдореЗрдВ рдПрдкреАрдЖрдИ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЧреБрдгреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реНрдг рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
ngModel FormsModule рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдЗрд╕реЗ
@NgModule рдШреЛрд╖рдгрд╛ рдХреЗ
рдЖрдпрд╛рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: рд▓рдЧрднрдЧ)ред рдХрд╕реНрдЯрдо рдкреНрд░рдкрддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдПрдирдХреЛрдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдпрд╣ рд╕рдм рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреБрдирд╢реНрдЪ: A2 + рдореЗрдВ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдм, рд▓рдЧрднрдЧ "рдореБрдХреНрдд" рдмрд╕реЗрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ "рдлреЗрдВрдЧ рд╢реБрдИ" рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЧрдВрджреЗ-рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрдо рд╕реЗ рдХрдо рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ)ред рдЗрд╕рд╕реЗ 100,500 рд╡реЙрдЪрд░реНрд╕ ("рдЙрдирдХреЗ" рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ) рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред A1 рдореЗрдВ рдХреМрди рд╕рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рднрд╛рд░ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рдерд╛ рдФрд░ рдЕрдореАрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкреГрд╖реНрдареЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╣рд╛рдереЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереАред
рдареАрдХ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ A2 рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдХреА рдХреАрдордд рдкрд░ рджреЗрдВред рдЕрдм рдЖрдк рдкреГрд╖реНрда рдкрд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рджрд┐рдЧреНрдЧрдЬ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред
рд╕рд┐рдХреНрдХреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ A2 + рдореЗрдВ "рдкреНрд░рд╡реЗрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓рд╛рдЧрдд рдереА, рдЬрд┐рд╕рдиреЗ рдврд╛рдВрдЪреЗ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди A1 рдореЗрдВ рднреА рдкреНрд░рд╡реЗрд╢ рдХреА рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рдереА, рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкреНрд░рдореБрдЦ рд▓реАрдЧ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рд╕рдордЭ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдХрдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк A1 рдкрд░ "рдмрдВрдж" рд╣реЛ рдЧрдП, рдлрд┐рд░ "рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ" рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ Vue рдХреЗ рдЕрдиреБрд░реВрдкред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдореИрдВ A2 + рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдХрд┐ рдорд╛рдВрдЧ рдореЗрдВ рдЬрд╛рд░реА рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ)ред