рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ, рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣
рдЯреНрд░реЗрдб рдореА рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдкрд┐рдЫрд▓реЗ рджреЛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИред

рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЯреНрд░реЗрдб рдореА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧреА, рдЬреЛ рдХрд┐ рдХреЛрдгреАрдп, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдФрд░ @ рдПрдирдЬреАрдЖрд░рдПрдХреНрд╕ / рд╕реНрдЯреЛрд░ рдЬреИрд╕реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рджреЛ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдкрд░ рдХреБрдЫ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреНрд▓реАрдирд░ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИрдВред
1. TrackBy рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЯреЗрдореНрдкреНрд▓реЗрдЯреЛрдВ рдореЗрдВ
ngFor
рд▓рд┐рдП
ngFor
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП,
trackBy
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреЗрддрд╛ рд╣реИред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдЬрдм рд╕рд░рдгреА рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреЛрдгреАрдп рдкреВрд░реЗ DOM рдкреЗрдбрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк
trackBy
рдЙрдкрдпреЛрдЧ
trackBy
, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рддрддреНрд╡ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ DOM рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
тЦНDo
<li *ngFor="let item of items;">{{ item }}</li>
тЦНPosle
// <li *ngFor="let item of items; trackBy: trackByFn">{{ item }}</li> // trackByFn(index, item) { return item.id; // id, }
2. рдХреАрд╡рд░реНрдб рдХрд╛рдВрд╕реНрдЯреЗрдмрд▓ рдФрд░ рдЪрд▓реЛ
рдпрджрд┐ рдЖрдк рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЖрдк рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ
const
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
let
рдФрд░
const
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ, рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреЛрд╖рд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордВрд╢рд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрд▓рддреА рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
тЦНDo
let car = 'ludicrous car'; let myCar = `My ${car}`; let yourCar = `Your ${car}; if (iHaveMoreThanOneCar) { myCar = `${myCar}s`; } if (youHaveMoreThanOneCar) { yourCar = `${youCar}s`; }
тЦНPosle
// car , car const car = 'ludicrous car'; let myCar = `My ${car}`; let yourCar = `Your ${car}; if (iHaveMoreThanOneCar) { myCar = `${myCar}s`; } if (youHaveMoreThanOneCar) { yourCar = `${youCar}s`; }
3. рдХрдиреНрд╡реЗрдпрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ
RxJS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрдЯрд░ рдЯреНрд░реА-рд╢реЗрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЬрдм рд╡реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдмрдпрд╛рдиреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рднреА рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг 5.5 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
тЦНDo
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/take'; iAmAnObservable .map(value => value.item) .take(1);
тЦНPosle
import { map, take } from 'rxjs/operators'; iAmAnObservable .pipe( map(value => value.item), take(1) );
4. рдПрдкреАрдЖрдИ рдлрд┐рдХреНрд╕ рдХрд╛ рдЕрд▓рдЧрд╛рд╡
рд╕рднреА API рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рдФрд░ рддреНрд░реБрдЯрд┐ рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрднреА-рдХрднреА рдПрдкреАрдЖрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рддрд░реНрдХ рдкреЗрд╢ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░реНрдХ рдХреЛ рдЙрди рдШрдЯрдХреЛрдВ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬрд╣рд╛рдВ рдкреИрдЪ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╣реАрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдореЗрдВ, рдФрд░ рдШрдЯрдХ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдПрдкреАрдЖрдИ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдХреЛ рджреЗрдЦреЗрдВред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЛ "рдХрд░реАрдм" рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЙрд╕ рдХреЛрдб рдХреЗ рдХрд░реАрдм рдЬрд╣рд╛рдВ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдирддреАрдЬрддрди, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╕реБрдзрд╛рд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдкреВрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрди рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рди рдХреЗрд╡рд▓ рд╕реБрдзрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдХреЛрдб рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреА рдЦреЛрдЬ рднреА рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЯреИрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ
API_FIX
(рдЬреЛ
TODO
рдЯреИрдЧ рд╕реЗ рдорд┐рд▓рддрд╛-рдЬреБрд▓рддрд╛ рд╣реИ), рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реБрдзрд╛рд░ред рдЗрд╕рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рд┐рдХреНрд╕ рдХреЛ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
5. рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛
рдШрдЯрдХреЛрдВ рд╕реЗ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╕реЗ рдмрдЪреЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреНрдб рдСрдкрд░реЗрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреБрдж рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдореИрдиреБрдЕрд▓ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдШрдЯрдХ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд▓рд┐рдВрдЯрд░ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрдВ, рдЬрд╣рд╛рдВ рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╢рдкрде рдирд╣реАрдВ рд▓реА рдереАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдШрдЯрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдмрд╛рд╣рд░ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
тЦНDo
// <p>{{ textToDisplay }}</p> // iAmAnObservable .pipe( map(value => value.item), takeUntil(this._destroyed$) ) .subscribe(item => this.textToDisplay = item);
тЦНPosle
// <p>{{ textToDisplay$ | async }}</p> // this.textToDisplay$ = iAmAnObservable .pipe( map(value => value.item) );
6. рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рд╣рдЯрд╛рдирд╛
рдореЙрдирд┐рдЯрд░ рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╕рдордп, рд╣рдореЗрд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ
take
рдСрдкрд░реЗрдЯрд░реЛрдВ,
takeUntil
рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдпрджрд┐ рдЖрдк рджреЗрдЦреЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬрд░реНрд╡ рдХреА рдЧрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдЯреНрд░реАрдо рдЦреБрд▓реА рд░рд╣реЗрдЧреА, рдЬреЛ рдХрд┐ рдШрдЯрдХ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреЗрдЬ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреАред
рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдорд╛рдиреНрдп рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рджреЗрдЦреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯрд░ рдирд┐рдпрдо рдмрдирд╛рдПрдВред
тЦНDo
iAmAnObservable .pipe( map(value => value.item) ) .subscribe(item => this.textToDisplay = item);
тЦНPosle
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЬрдм рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╡рд╕реНрддреБ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рди рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░
takeUntil
,
takeUntil
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
private destroyed$ = new Subject(); public ngOnInit (): void { iAmAnObservable .pipe( map(value => value.item)
this
рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдХрдИ рдордирд╛рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдорд╛рди рдЪрд╛рд╣рд┐рдП:
iAmAnObservable .pipe( map(value => value.item), take(1), takeUntil(this._destroyed$) ) .subscribe(item => this.textToDisplay = item);
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдБ рд╣рдо
takeUntil
рд╕рд╛рде
take
takeUntil
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
take
ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕реНрдореГрддрд┐ рд▓реАрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рддрдм рддрдХ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдирд╣реАрдВ рдХрд░рддреА рдереА рдЬрдм рддрдХ рдХрд┐ рдШрдЯрдХ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдпрджрд┐
takeUntil
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ
takeUntil
рдирд╣реАрдВ рдХрд┐рдпрд╛
takeUntil
, рддреЛ рд╕рджрд╕реНрдпрддрд╛ рддрдм рддрдХ рдореМрдЬреВрдж рд░рд╣реЗрдЧреА рдЬрдм рддрдХ рдХрд┐ рдкрд╣рд▓рд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╣реА рдирд╖реНрдЯ рд╣реЛ рдЪреБрдХрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рди рдХрднреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
7. рдЙрдкрдпреБрдХреНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЪреМрд░рд╕рд╛рдИ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред
- рдЬрдм рдЖрдк рдХрд┐рд╕реА рдирдИ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдиреЗ рдкрд░ рдкрд┐рдЫрд▓реА рд╢реЗрдбреНрдпреВрд▓ рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ
switchMap
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - рдпрджрд┐ рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рднреА рдкреНрд░реЗрд╖рдг рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ
mergeMap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - рдЬрдм рд╡реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
concatMap
рддреЛ concatMap
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред exhaustMap
рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ exhaustMap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдПрдХ рдСрдкрд░реЗрдЯрд░, рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХрдИ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдПрдХ рд╣реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЪрдпрдирд┐рдд рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЧрд▓рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред
8. рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ
рдлрд┐рд░, рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдХреЛрдгреАрдп-рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рддрдХрдиреАрдХ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреА рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рдкрд░ рд╣реА рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдШрдЯрдХ рдХреЗрд╡рд▓ рддрднреА рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдбрд╛рдЙрдирд▓реЛрдб рдЧрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдкреНрд░рдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
тЦНDo
// app.routing.ts { path: 'not-lazy-loaded', component: NotLazyLoadedComponent }
тЦНPosle
// app.routing.ts { path: 'lazy-load', loadChildren: 'lazy-load.module#LazyLoadModule' } // lazy-load.module.ts import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { LazyLoadComponent } from './lazy-load.component'; @NgModule({ imports: [ CommonModule, RouterModule.forChild([ { path: '', component: LazyLoadComponent } ]) ], declarations: [ LazyLoadComponent ] }) export class LazyModule {}
9. рдЕрдиреНрдп рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рднреАрддрд░ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдХрднреА-рдХрднреА, рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдИ рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдиреНрдп рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ
subscribe
рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪреЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЪреЗрди рдСрдкрд░реЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдРрд╕реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ, рдХреЛрдИ рднреА
withLatestFrom
рдФрд░
combineLatest
рдХреЛ рдиреЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЙрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред
тЦНDo
firstObservable$.pipe( take(1) ) .subscribe(firstValue => { secondObservable$.pipe( take(1) ) .subscribe(secondValue => { console.log(`Combined values are: ${firstValue} & ${secondValue}`); }); });
тЦНPosle
firstObservable$.pipe( withLatestFrom(secondObservable$), first() ) .subscribe(([firstValue, secondValue]) => { console.log(`Combined values are: ${firstValue} & ${secondValue}`); });
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдпрджрд┐ рд╣рдо рдкрдардиреАрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╛ рдмреБрд░реЗ рдХреЛрдб рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо RxJS рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ RxJS API рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдХреЛ рдЖрд░рдореНрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп
firstObservable
, рддреЛ рд╡рд╣ рдкрд╣рд▓реЗ
firstObservable
рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░
firstObservable
, рдлрд┐рд░ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рджреВрд╕рд░реА рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рдордХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ред
10. рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╣рдореЗрд╢рд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдпрд╛ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдХреЛ
any
рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдЪрд░ рдпрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдЙрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
const x = 1; const y = 'a'; const z = x + y; console.log(`Value of z is: ${z}` // Value of z is 1a
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
y
рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдЧрд▓рдд рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЪрд░ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЙрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдмрддрд╛рдХрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
const x: number = 1; const y: number = 'a'; const z: number = x + y; // : Type '"a"' is not assignable to type 'number'. const y:number
рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдФрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public ngOnInit (): void { let myFlashObject = { name: 'My cool name', age: 'My cool age', loc: 'My cool location' } this.processObject(myFlashObject); } public processObject(myObject: any): void { console.log(`Name: ${myObject.name}`); console.log(`Age: ${myObject.age}`); console.log(`Location: ${myObject.loc}`); } // Name: My cool name Age: My cool age Location: My cool location
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ,
myFlashObject
,
myFlashObject
рд▓рд┐рдП
myFlashObject
рдирд╛рдо рдФрд░ рдХреЛрдб
myFlashObject
рдПрдбрд┐рдЯ
myFlashObject
рдЧрд▓рддреА
myFlashObject
:
public ngOnInit (): void { let myFlashObject = { name: 'My cool name', age: 'My cool age', location: 'My cool location' } this.processObject(myFlashObject); } public processObject(myObject: any): void { console.log(`Name: ${myObject.name}`); console.log(`Age: ${myObject.age}`); console.log(`Location: ${myObject.loc}`); } // Name: My cool name Age: My cool age Location: undefined
рдпрджрд┐
myFlashObject
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдорд╛рдирддрд╛ рд╣реИ рдХрд┐
myFlashObject
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА
loc
рд╕рдВрдкрддреНрддрд┐
undefined
ред рд╡рд╣ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддреА рд╣реИ рдХрд┐
loc
рдПрдХ рдЕрд╡реИрдз рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐
myFlashObject
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рджреЗрдЦреЗрдВрдЧреЗ, рдПрдХ рдЕрджреНрднреБрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:
type FlashObject = { name: string, age: string, location: string } public ngOnInit (): void { let myFlashObject: FlashObject = { name: 'My cool name', age: 'My cool age', // Type '{ name: string; age: string; loc: string; }' is not assignable to type 'FlashObjectType'. Object literal may only specify known properties, and 'loc' does not exist in type 'FlashObjectType'. loc: 'My cool location' } this.processObject(myFlashObject); } public processObject(myObject: FlashObject): void { console.log(`Name: ${myObject.name}`); console.log(`Age: ${myObject.age}`) // Property 'loc' does not exist on type 'FlashObjectType'. console.log(`Location: ${myObject.loc}`); }
рдпрджрд┐ рдЖрдк рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣
tsconfig.json
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ,
strict:true
рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рдЦреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
11. рд▓рд┐рдВрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
Tslint рдореЗрдВ
рдиреЛ- рдиреЛ ,
рдиреЛ-рдореИрдЬрд┐рдХ-рдирдВрдмрд░ ,
рдиреЛ-рдХрдВрд╕реЛрд▓ рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирдХ рдирд┐рдпрдо рд╣реИрдВред рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
tslint.json
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ
tslint.json
рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Ations рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдХреА рдПрдХрд░реВрдкрддрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп tllint рдирд┐рдпрдо рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛ рдЕрдиреБрдЪрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдзрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ
рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬреЛ
TSQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд▓рд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдирд┐рдпрдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред
тЦНDo
public ngOnInit (): void { console.log('I am a naughty console log message'); console.warn('I am a naughty console warning message'); console.error('I am a naughty console error message'); }
тЦНPosle
// tslint.json { "rules": { ....... "no-console": [ true, "log", // console.log "warn" // console.warn ] } } // ..component.ts public ngOnInit (): void { console.log('I am a naughty console log message'); console.warn('I am a naughty console warning message'); console.error('I am a naughty console error message'); } // . console.log and console.warn console.error, Calls to 'console.log' are not allowed. Calls to 'console.warn' are not allowed.
рдкрд░рд┐рдгрд╛рдо
рдЖрдЬ рд╣рдордиреЗ 11 рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдЕрдЧрд▓реА рдмрд╛рд░, 11 рдФрд░ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
