рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде, рдЖрдк рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдХрдкрдЯреА "рд▓рдЧрднрдЧ" рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдмрдирд╛рдХрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдХреНрдпреЛрдВ рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЖрдЬ рд╣рдо рдЬрд┐рд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЙрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рд╡рд╣ рдХреЛрдгреАрдп рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ (рдФрд░ рди рдХреЗрд╡рд▓ рдЙрд╕реЗ) рдорд┐рд▓рдиреЗ рдХрд╛ рдореМрдХрд╛ рджрд┐рдпрд╛ рдерд╛ред
рдирдВрдмрд░ 1ред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рддреЛ, рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЛрдгреАрдп рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓рд╛ рдФрд░ рдЙрд╕рдиреЗ рдЗрд╕реЗ рдХреЛрдгреАрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдорд╛рдирдХ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЕрджреНрднреБрдд! рдЖрдЗрдП рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
<span awesomeTooltip="'Tooltip text'"> </span>
рдЖрдк рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░реЗрдВ ... рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп, рдЕрдиреБрднрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рдХреНрд░реЛрдо рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦреЗрдВред рдФрд░ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдгреАрдп рдЪреБрдк рд╣реИред
рдлрд┐рд░ рдЖрдкрдХреА рдЯреАрдо рдХреЗ рдХреБрдЫ рдЙрдЬреНрдЬреНрд╡рд▓ рд╕рд┐рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред
<span [awesomeTooltip]="'Tooltip text'"> </span>
рдЙрд╕рдХреЗ рдмрд╛рдж, рдереЛрдбрд╝рд╛ рд╕рдордп рдЧрдВрд╡рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдмрд╛рдд рд╣реИ: рд╣рдо рд╕рд┐рд░реНрдл рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рднреВрд▓ рдЧрдПрдЕрдм рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╣рдо рдХреЗрд╡рд▓ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рднреВрд▓ рдЧрдПред
рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдпрдо рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ: рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рди рдХрд░реЗрдВред
рдЖрдк
рдпрд╣рд╛рдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдирдВрдмрд░ 2ред ViewChild рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рджреЗрддрд╛ рд╣реИ
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдиреЗ рдПрдХ рдХреЛрдгреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд╛рда рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рддрддреНрд╡ рдХрд╛ рд▓рд┐рдВрдХ рдмрдирд╛рдпрд╛ рд╣реИред
<input type="text" name="fname" #inputTag>
рдЖрдк RxJS
fromEvent рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдЧрд┐рд░ рдЬрд╛рдПрдЧреАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдХреЛрдгреАрдп
ViewChild
рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class SomeComponent implements AfterViewInit { @ViewChild('inputTag') inputTag: ElementRef; ngAfterViewInit(){ const input$ = fromEvent(this.inputTag.nativeElement, 'keyUp') } ... }
рдпрд╣рд╛рдВ, RxJS
fromEvent
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
рддреНрд░реБрдЯрд┐рдХреНрдпрд╛ рд╣реБрдЖ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдпрджрд┐
ViewChild
undefined
рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ
*ngIf
ред
<div *ngIf="someCondition"> <input type="text" name="fname" #inputTag> </div>
рдпрд╣рд╛рдВ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдкрд░рд╛рдзреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╕реНрдпрд╛ рдХреЗ рддрддреНрд╡ рдХреЗ рдКрдкрд░ рдЕрдиреНрдп рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдпрд╛
ng-template
рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗред рд╡реИрд░рд┐рдПрдВрдЯ of1
рдЖрдк рдмрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рддрддреНрд╡ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддрддреНрд╡ рд╣рдореЗрд╢рд╛ рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛ рдФрд░
ViewChild
ngAfterViewInit
рд╣реБрдХ рдореЗрдВ рдЗрд╕рдХрд╛ рд▓рд┐рдВрдХ рд╡рд╛рдкрд╕ рдХрд░
ngAfterViewInit
ред
<div [hidden]="!someCondition"> <input type="text" name="fname" #inputTag> </div>
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗред рд╡реИрд░рд┐рдПрдВрдЯ тЦН2
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╕реЗрдЯрд▓рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
class SomeComponent { @ViewChild('inputTag') set inputTag(input: ElementRef|null) { if(!input) return; this.doSomething(input); } doSomething(input) { const input$ = keysfromEvent(input.nativeElement, 'keyup'); ... } }
рдпрд╣рд╛рдВ, рдЬреИрд╕реЗ рд╣реА
inputTag
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд░реНрдЬ рдбреЗрдЯрд╛ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрди рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рдпрд╣рд╛рдВ рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Angular 8 рдореЗрдВ
ViewChild
рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред - рдпрджрд┐ рдЖрдкрдХреЛ RxJs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИ - рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рдирдВрдмрд░ 3ред * NgFor (DOM рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж) рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╕реВрдЪреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕реВрдЪреА рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдгреАрдп
*ngFor
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИред
<div *ngFor="let item of itemsList; let i = index;" [customScroll] > <p *ngFor="let item of items" class="list-item">{{item}}</p> </div>
рдЖрдорддреМрд░ рдкрд░, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рд╕реВрдЪреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реЙрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
scrollDirective.update
рдЬреИрд╕реЗ рдХреБрдЫ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣
ngOnChanges
рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class SomeComponent implements OnChanges { @Input() itemsList = []; @ViewChild(CustomScrollDirective) scroll: CustomScrollDirective; ngOnChanges(changes) { if (changes.itemsList) { this.scroll.update(); } } ... }
рд╕рдЪ рд╣реИ, рдпрд╣рд╛рдБ рд╣рдо рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЕрджреНрдпрддрди рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реБрдХ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕реВрдЪреА рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
*ngFor
рдлрд┐рдирд┐рд╢ рдХрд╛рдо рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХреЛ рд╕рд╣реА рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдЖрдк рдЗрди 3 рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Epрд╕реНрдЯреЗрдк рдирдВрдмрд░ 1
рдЙрди рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдБ
*ngFor
(
#listItems
)
#listItems
ред
<div [customScroll]> <p *ngFor="let item of items" #listItems>{{item}}</p> </div>
EpStep рд╕рдВрдЦреНрдпрд╛ 2
рдХреЛрдгреАрдп
ViewChildren
рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣
QueryList
рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдЗрдХрд╛рдИ рджреЗрддрд╛ рд╣реИред
Epрд╕реНрдЯреЗрдк рдирдВрдмрд░ 3
QueryList
рд╡рд░реНрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рд░ рдмрд╛рд░ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ
QueryList
ред
class SomeComponent implements AfterViewInit { @Input() itemsList = []; @ViewChild(CustomScrollDirective) scroll: CustomScrollDirective; @ViewChildren('listItems') listItems: QueryList<any>; private sub: Subscription; ngAfterViewInit() { this.sub = this.listItems.changes.subscribe(() => this.scroll.update()) } ... }
рдЕрдм рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирдВрдмрд░ 4ред ActivatedRoute.queryParam рдХреЗ рд╕рд╛рде рд╕рдорд╕реНтАНрдпрд╛рдПрдБ рдЬреЛ рдХрднреА-рдХрднреА рдХреНрд╡реЗрд░реАрдЬрд╝ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рдХреЛрдб рдХреЗ рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ рдЬреИрд╕реЗ
#x
ред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдордиреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ
RouterModule
рдЬреЛрдбрд╝рд╛ред рд░реВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рддрд╛рдХрд┐ рдпрджрд┐ URL рдореЗрдВ рдХреЛрдИ рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ /home
рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред - рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓
AppComponent
рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред - рдЙрдкрдпреБрдХреНрдд рдорд╛рд░реНрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП
AppComponent
<router-outlet>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред - рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рддред рд╣рдореЗрдВ URL рд╕реЗ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП
queryParams
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд URL рдорд┐рд▓рд╛ рд╣реИ:
https:
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
queryParams
рдЗрд╕ рддрд░рд╣
queryParams
рджреЗрдЧрд╛:
{accessToken: 'someTokenSequence'}
рдЖрдЗрдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрд╕ рд╕рдм рдХреЗ рдХрд╛рдо рдХреЛ рджреЗрдЦреЗрдВред
рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЬреЛ рдПрдХ рд░реВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИрдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рд╛, рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
queryParams
рдСрдмреНрдЬреЗрдХреНрдЯ рджреЛ рдмрд╛рд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЦрд╛рд▓реА рд╣реИ, рдпрд╣ рдХреЛрдгреАрдп рд░рд╛рдЙрдЯрд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ -
{accessToken: 'someTokenSequence'}
)ред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ URL рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд░рд╛рдЙрдЯрд░ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡рд╣ рд╣реИ - рдкрд╣рд▓реА рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреВрд╕рд░реА рд╡рд╕реНрддреБ рднреА, рдЦрд╛рд▓реА рд╣реИ, рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреА рд╣реИ, рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рджреВрд╕рд░реА рд╡рд╕реНрддреБ рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдб рдПрдХ рджреВрд╕рд░реА рд╡рд╕реНрддреБ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╡рд╣ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ URL рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рдереЗред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ? рдпрд╣рд╛рдВ RxJs рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо
ActivatedRoute.queryParams
рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреЛ рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рдмрдирд╛рдПрдВрдЧреЗред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ - рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
Epрд╕реНрдЯреЗрдк рдирдВрдмрд░ 1
рдкрд╣рд▓реА рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБ,
paramsInUrl$
, рдпрджрд┐
queryParams
рдЦрд╛рд▓реА рдирд╣реАрдВ
queryParams
рддреЛ рдбреЗрдЯрд╛
paramsInUrl$
рджреЗрдЧреА:
export class AppComponent implements OnInit { constructor(private route: ActivatedRoute, private locationService: Location) { } ngOnInit() {
EpStep рд╕рдВрдЦреНрдпрд╛ 2
рджреВрд╕рд░рд╛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ,
noParamsInUrl$
, рдХреЗрд╡рд▓ рд░рд┐рдХреНрдд рдорд╛рди
noParamsInUrl$
рдпрджрд┐ URL рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рдорд┐рд▓реЗ:
export class AppComponent implements OnInit { title = 'QueryTest'; constructor(private route: ActivatedRoute, private locationService: Location) { } ngOnInit() { ...
Epрд╕реНрдЯреЗрдк рдирдВрдмрд░ 3
рдЕрдм RxJS
рдорд░реНрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ:
export class AppComponent implements OnInit { title = 'QueryTest'; constructor(private route: ActivatedRoute, private locationService: Location) { } ngOnInit() {
рдЕрдм рджреЗрдЦрд╛ рдЧрдпрд╛
param$
рд╡рд╕реНрддреБ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░
param$
рдорд╛рди
param$
- рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА
queryParams
рдореЗрдВ
queryParams
рд╣реЛ (рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ
queryParams
) рдпрд╛ рдирд╣реАрдВ (рдХреЛрдИ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ
queryParams
)ред
рдЖрдк
рдпрд╣рд╛рдВ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдирдВрдмрд░ 5ред рдзреАрдореЗ рдкреГрд╖реНрда
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕реНрд╡рд░реВрдкрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдпрд╣ рдШрдЯрдХ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ:
- рдпрд╣ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдСрдкрд░реЗрд╢рди рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
formatItem
рд╡рд┐рдзрд┐ рдХрд╣рдХрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - рдпрд╣ рдорд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдореВрд▓реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╕рд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдЖрдк рдЗрд╕ рдШрдЯрдХ рд╕реЗ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рд╡рд┐рд╖рдорддрд╛рдПрдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред
FormatItem рдХреЙрд▓ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдФрд░ CPU рд▓реЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрддрдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдгреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
formatItem
рдХрд╛рд░реНрдп рдлрд╝рдВрдХреНрд╢рди)ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрджрд┐ рдХреЛрдИ рднрд╛рд░реА рдЧрдгрдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рджрдмрд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ? рдпрд╣
formatItem
рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреА рдЧрдИ
formatItem
рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдкреГрд╖реНрда рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рднреНрдп рд▓рдЧрддрд╛ рд╣реИред
рдХреЗрд╡рд▓ 6 formatItem рдХреЙрд▓ рдФрд░ рдХрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдбрдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ:
- рдЪреВрдВрдХрд┐ рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
mousemove
рдЗрд╡реЗрдВрдЯ рдЕрднреА рднреА рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред - рдпрджрд┐
mousemove
рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдЧрдгрдирд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреЛ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ), рддреЛ рдЖрд╡реЗрджрди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЖрдк рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░
NgZone.runOutsideOfAngular
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ mousemove
рдЗрд╡реЗрдВрдЯ рд╣реЛрдиреЗ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЛ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ mousemove
(рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛)ред - рдЖрдк polyfills.ts рдореЗрдВ рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╝реЛрди.рдЬреЗрдПрд╕ рдкреИрдЪ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove'];
рдпрджрд┐ рдЖрдк рдХреЛрдгреАрдп-рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ -
рдпрд╣рд╛рдВ ,
рдпрд╣рд╛рдВ ,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ - рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реАред
рдкрд░рд┐рдгрд╛рдо
рдЕрдм рдЬрдм рдЖрдкрдиреЗ рдпрд╣ рд▓реЗрдЦ рдкрдврд╝ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ 5 рдирдП рдЙрдкрдХрд░рдг рдЖрдкрдХреЗ рдХреЛрдгреАрдп-рдбреЗрд╡рд▓рдкрд░ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╕реБрдЭрд╛рд╡ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ?
