Angular: рдкреНрд░рд╕реНрддрд╛рд╡: рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рджрд┐рд╕ре░ 2015  ┬╖  183рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдБред

@Input рд╕рдВрдкрддреНрддрд┐ рдорд╛рди рдореВрд▓ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкрд░рд┐рд╡рд░реНрддрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЖрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдЧрд░ рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЗрдирдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рдХреА рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рд╣реИ), рддреЛ рдЗрд╕рдХреЗ рдЪреЗрдВрдЬ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдиреЗ рдЗрд╕реЗ рдХрднреА рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рд▓рдХреНрд╖реНрдп

  • рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреА рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдирдкреБрдЯ рдЧреБрдг рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдмрджрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред

    рдкреНрд░рд╕реНрддрд╛рд╡

@Component({ selector: "child" })
class Child {
  @Input("input") inputValue: Observable<T>;

  ngOnInit() {
    this.inputValue.map((value)=>...);
  }
}

@Component({
  template: `
  <child [input]="valueToChild"></child>
  `
})
class Parent {
  valueToChild: T;
}

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Observable<T> , рдореБрдЭреЗ рдЗрд╕реЗ рдиреАрдЪреЗ рдХреА рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

@Component({ selector: "child" })
class Child {
  @Input("input") inputValue: Observable<T>
}

@Component({
  template: `
  <child [input]="valueToChild"></child>
  `
})
class Parent {
  valueToChild: Observable<T> = new Observable<T>((observer)=>{
    ...
    observer.next(val);
  });
}

рдЙрджрд╛рд╣рд░рдг: http://plnkr.co/edit/BWziQygApOezTENdTVp1?p=preview

рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣рдореЗрдВ рдЦреБрд╢ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

core inputs / outputs feature Needs Design

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкреНрд░рд┐рдп рдХреЛрдгреАрдп рдЯреАрдоред рдХреГрдкрдпрд╛ рд╣рдореЗрдВ 2020 рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджреЗрдВ :-)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ @jcomputer рд╕рдорд╛рдзрд╛рди рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдЕрд▓рдЧ рдбреЗрдХреЛрд░реЗрдЯрд░ рдирд╛рдо рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ @ViewChild рдореЗрдВ { read } рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рдЙрджрд╛рд╣рд░рдг:

@Input({ observable: true }) 
@Input({ asObservable: true }) 
@Input({ asSubject: true })

рд╕рднреА 183 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ @laco0416 - рдЖрдкрдХреА рдЕрдВрдЧреНрд░реЗрдЬреА рдареАрдХ рд╣реИ, рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ!

рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдпрд╣ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдпрд╣ https://github.com/angular/angular/issues/4062 (рдЕрд╡рд▓реЛрдХрди рджреЗрдЦрдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ) рдФрд░ https://github.com/angular/angular/issues/5467 (рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдмрд╛рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо) рдХреЗ рд╕рд╛рде рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ (рдпреЗ рд▓реЛрдЧ рдЧрд╛рдпрдм рд╣реИрдВ!), рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо @Input() рд╕реАрдзреЗ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдмрдирд╛ рджреЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ObserveInput() рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ _after_ рд╣рдо рдПрдХ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рдмреАрдЪ, рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА (рдФрд░ _very_ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ!!! рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рди рдХрд░реЗрдВ) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪ рд░рд╣реЗ рдереЗ? http://plnkr.co/edit/Nvyd9IPBZp9OE2widOcW?p=preview

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдореЗрдВ рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрдирдкреБрдЯ рдЧреБрдг "рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдмрдЪреНрдЪреЗ рддрдХ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдХрднреА рднреА рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдирд╣реАрдВ)ред

@alexpods рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИ - рдЗрд╕рдХреА _listening_ рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП _as_ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп, рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореЗрд░рд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИред

@рд░реЛрдмрд╡рд░реНрдорд▓реНрдб

рдЖрдкрдХреА рдЕрдВрдЧреНрд░реЗрдЬреА рдареАрдХ рд╣реИ, рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ!

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдмрд╣реБрдд рд░рд╛рд╣рдд рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдЖрдкрдХрд╛ @ObserveInput рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ!
рд╕рд╛рде рд╣реА, @Input рдореЗрдВ рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

@alexpods рдореБрдЭреЗ рднреА рдмрд┐рд▓реНрдХреБрд▓ред

рдпрд╣ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореЗрд░рд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИред

рдореИрдВ рд░реЛрдм рдХреА рддрд░рд╣ рд╣реА рд╕реЛрдЪрддрд╛ рд╣реВрдВред

@ laco0416 рдУрд╣, рдЧрд▓рддрдлрд╣рдореА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдЕрдЧрд░ рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛" рддреЛ рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рджрд┐рдпрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдпрд╛ рдореБрдЭреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЧрд▓рдд рдЬрдЧрд╣ рдкрд░ рдЕрдиреБрд░реЛрдз рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ (рд╣реИ, рд▓реЗрдХрд┐рди, рдЕрдм рддрдХ рдирд╛рдХрд╛рдо рд░рд╣рдиреЗ) рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдПрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдлрд┐рд░ рдореИрдВ рдареЛрдХрд░ рдЦрд╛рдИ рдкрд░ @robwormald рдХреЗ plunkr рд╣реИ, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ _almost_ рдкреВрд░реА рддрд░рд╣ рд╕реЗ (рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдирд╣реАрдВ)ред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореБрдЭреЗ рдЬреЛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реБрдЖ рд╡рд╣ рдпрд╣ рдерд╛ рдХрд┐ рдпрд╣ ngOnChanges рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдореЗрдВ рд▓рд╛рдн рдЙрдард╛ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдЬреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ _all_ рд▓рд╛рдЗрдлрд╕рд╛рдЗрдХрд┐рд▓ рд╣реБрдХ рдХреЛ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рдпрд╛рдиреА onChanges$: Observable<{[key: string]: SimpleChange}> , onInit$: Observable<{}> , рдЖрджрд┐ред

рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд░рдПрдХреНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА ;-)

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

AFAIK, рдирд╣реАрдВред
@robwormald рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЦрдмрд░ рд╣реИ?

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! @robwormald рдЗрд╕ рдкрд░ рдХреЛрдИ рд╢рдмреНрдж?

рдореИрдВ рдПрдХ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓рддреЗ рд╣реБрдП @Input рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ , рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ @ObserveInput рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ (рдХреЛрдгреАрдп 1) рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдПрдХ рдШрдЯрдХ рдХреЗ рднреАрддрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЛ "рд╢рд╛рдорд┐рд▓" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдХреА рд╢рдХреНрддрд┐ рдФрд░ рд▓рд╛рд▓рд┐рддреНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд░реЛрдм рдордЬрд╛рдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм рдЙрд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ @ObserveInput рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗред рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдореИрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдзрд╢рд╛рд▓рд╛рдПрдВ "рд╡рд░реНрдЧ-рд╕реНрддрд░" рдкрд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ (рдпрджрд┐ рд╡рд╣ рд╢рдмреНрджрд╛рд╡рд▓реА рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ) рдФрд░ рдЗрд╕рд▓рд┐рдП рдШрдЯрдХ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИред рддрддреНрдХрд╛рд▓ рд╕рдордп рдкрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛ рдмрдирд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ @ObserveInput рдмреЗрд╣рддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдкрд░ рдХреЛрдИ рдЦрдмрд░ рд╣реИ?

@lephyrus рдЬрдмрдХрд┐ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ @ObserveInput рдбреЗрдХреЛрд░реЗрдЯрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, @Input рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдЦреНрддреА рд╕реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдбреЗрдХреЛрд░реЗрдЯрд░ рдмрд╕ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ "рдЪреАрдиреА" рд╣реЛрдЧрд╛ред

ngOnChanges рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рдШрдЯрдирд╛ рд╣реИред ngOnChanges рдЕрдВрджрд░ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ rxjs Subject рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд:

<strong i="13">@Input</strong> inputString: string;
private Subject<string> inputString$ = new Subject<string>;

ngOnChanges(changes: { [key: string]: SimpleChange }) {
    if (changes.hasOwnProperty('inputString')) {
        this.inputString$.next(changes['inputString'].currentValue);
    }
}

constructor() {
    inputString$.subscribe(x => {
        console.log('inputString is now', x);
    });
}

рдпрд╛, рдпрджрд┐ рдЖрдк рдХреБрдЫ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдШрдЯрдХ extends :

import { SimpleChange } from '@angular/core';
import { Observable, ConnectableObservable, Observer } from 'rxjs';

export interface TypedSimpleChange<T> {
    previousValue: T;
    currentValue: T;
}

export class ReactiveComponent {
    private changesObserver: Observer<{ [key: string]: SimpleChange }>;
    private changes$: ConnectableObservable<{ [key: string]: SimpleChange }>;

    constructor() {
        this.changes$ = Observable.create((observer: Observer<{ [key: string]: SimpleChange }>) => this.changesObserver = observer).publishReplay(1);
        this.changes$.connect();
    }

    public observeProperty<T>(propertyName: string): Observable<TypedSimpleChange<T>> {
        return this.changes$
            .filter(changes => changes.hasOwnProperty(propertyName))
            .map(changes => changes[propertyName]);
    }

    public observePropertyCurrentValue<T>(propertyName: string): Observable<T> {
        return this.observeProperty<T>(propertyName)
            .map(change => change.currentValue);
    }

    ngOnChanges(changes: { [key: string]: SimpleChange }) {
        this.changesObserver.next(changes);
    }
}

... рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

@Component({
    ...
})
export class YourComponent extends ReactiveComponent {
    @Input() inputString: string;

    constructor() {
        super();
        this.observePropertyCurrentValue<string>('inputString')
            .subscribe(x => console.log('inputString is now', x));
    }
}

рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ @ObserveInput рдбреЗрдХреЛрд░реЗрдЯрд░ рдЙрдкрд▓рдмреНрдз рди рд╣реЛ рдЬрд╛рдПред

рдзрдиреНрдпрд╡рд╛рдж, @wmaurerред рдЖрдкрдХрд╛ ReactiveComponent рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐рд╣реАрди рдХреЛрдб рдФрд░ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ! рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рднреА рдЕрдЪреНрдЫрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА OnPush рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрдм "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЪреАрдиреА" рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред (рд╕рд╛рде рд╣реА рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рд╕реАрдЦреВрдВрдЧрд╛ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ Observable.create() рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдореБрдЭреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред) рдлрд┐рд░ рд╕реЗ: рдорд░реНрд╕реА рдЧреЙрд▓! :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

@lephyrus рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, g├дrn gescheh ;-)

рдореИрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ Observable.create() рдПрдХ рдХреЛ рдкрдХрдбрд╝ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Observer рдХреНрд░рдо рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП next() ред рдореИрдВ рдПрдХ Subject рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдЬреЛ рдПрдХ Observable рдФрд░ рдПрдХ Observer , рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Subject ( Observer Subject ( Observer Subject ) Observer )ред

@laco0416 https://github.com/angular/angular/issues/13248 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж

@DzmitryShylovich рдирд╣реАрдВред рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдИрд╡реЗрдВрдЯ-рд╕рдВрдЪрд╛рд▓рд┐рдд рдбреЗрдЯрд╛ рдкрд╛рд╕рд┐рдВрдЧ рд╣реИред

@ObserveInput рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛! :+1:

рдПрдХ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @wmaurer рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрд░реЗ рдкрд╛рд╕ рднреА рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

@Input() chartConfig: ChartConfig;

constructor(private _reportService: ReportService) {
        super();
             this.observePropertyCurrentValue<string>('chartConfig')
            .subscribe(changedConfig => this.updateChart(changedConfig));
 }

export class ChartConfig {
    public id: string;
    public type: any;
    public data: any;
    public labels: any;
}

рд╣рд╛рд▓рд╛рдВрдХрд┐ this.updateChart рдФрд░ ngOnChanges рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирдореВрдиреЗ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ChrisWorks рдЗрд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

this.observePropertyCurrentValue<ChartConfig>('chartConfig')
            .subscribe(changedConfig => console.log(changedConfig));

рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рдмрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╣рд╛рдп @wmaurer , рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдирдореВрдиреЗ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рдЖрдк "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдПрдХ рдирдореВрдирд╛ рдЧрд┐рдЯ рд░реЗрдкреЛ? :)

@ChrisWorks рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред observePropertyCurrentValue рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдирдкреБрдЯ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ ng2 рдмреАрдЯрд╛ 0 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЗрдирдкреБрдЯ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рддрд╛рд░:
https://github.com/wmaurer/todomvc-ng2-reactive
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/wmaurer/todomvc-ng2-reactive/blob/master/src/app/todo-item/todo-item.component.ts

+1 рдРрд╕рд╛ рдореМрд▓рд┐рдХ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛, рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрднреА рддрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!

рдореБрдЭреЗ рдЕрдВрдд рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдПрдУрдЯреА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :) рд░рд╣рд╕реНрдп @Input() рдХреЛ рджреВрд╕рд░реЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реИред

рдбреЗрдХреЛрд░реЗрдЯрд░:

import { ReplaySubject } from 'rxjs/ReplaySubject'                                                                                                 

const subjects = new WeakMap()                                                                                                                     

export function ObservableInput() {                                                                                                
  return (target, propertyKey) => {                                                                                                                
    delete target[propertyKey]                                                                                                                     

    Object.defineProperty(target, propertyKey, {                                                                                                   
      set(value) {                                                                                                                                 
        this[propertyKey].next(value)                                                                                                              
      },                                                                                                                                                                                                                            
      get() {                                                                                                                                      
        let subject = subjects.get(this)                                                                                                           
        if (! subject)  {                                                                                                                          
          subject = new ReplaySubject<any>(1)                                                                                                      
          subjects.set(this, subject)                                                                                                              
        }                                                                                                                                          
        return subject                                                                                                                             
      },                                                                                                                                           
    })                                                                                                                                             
  }                                                                                                                                                
}                                                                                                                                                  

рдЙрдкрдпреЛрдЧ:

class SomeComponent {
  @Input() @ObservableInput()                                                                                                                    
  public index: Observable<number>
}                                                                                                               

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрдм рдЗрд╕реЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИред рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдореМрдЬреВрджрд╛ @Input рдХреЛ рдЕрдЧрд▓реЗ Observable рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ https://github.com/ohjames/observable-input

рдЕрдЧрд░ рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрддрд╛, рддреЛ рдореИрдВ ngOnChanges рдХреЗ рдПрдХрд▓ рд╡рд┐рд╖рдп рдПрдирд╛рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛: Subject<SimpleChanges>
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЖрдк рдЕрднреА рднреА рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдирдкреБрдЯ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

1 рдкреНрд░рддрд┐ рдЗрдирдкреБрдЯ рд╡рд┐рд╖рдп рдЧреЗрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдк рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╣реБрдд рдХреБрдЫ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЧрд▓рдд рд╣реИ рдФрд░ input = value рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдкрд░ рдореВрд▓реНрдп рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ рдЕрдкрдирд╛ рд╡рд┐рд╖рдп рдкреВрд░рд╛ рдХрд░рдирд╛ред

рдЖрдк рдпрд╣рд╛рдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдЬрд╛рд╡рдЯреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

@ghetolay рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡рд┐рд╖рдп рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рджреГрд╢реНрдп рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХреЛрдИ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬреАрд╕реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдкрд░ рдореВрд▓реНрдп рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдореБрджреНрджрд╛ рд╣реИред рдХреЛрдгреАрдп рд╕рдВрдХрд▓рдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдпрд╣ рдХреБрдЫ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛;)

changes$ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП BehaviorSubject рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓реАрдХ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЗрд╕реЗ Observable<...> рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд░реНрдмреЛрдЬрд╝ред

рдХрдИ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП... рдЪрд╛рд╣реЗ рдЖрдк n рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ 1 рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА n рд╕рджрд╕реНрдпрддрд╛рдПрдБ рд╣реИрдВред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ 1 рд╡рд┐рд╖рдп рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ рдореЗрдВ рдПрдХ рдирдХреНрд╢рд╛ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рдХреЗрд╡рд▓ n рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░ рдЦреБрдж рдХреЛ, рдбреЗрдХреЛрд░реЗрдЯрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ observables рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ typesafe рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ SimpleChange рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рдХрд╛рд░ any ред

@рдУрд╣рдЬреЗрдореНрд╕

рдЬрдм рджреГрд╢реНрдп рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬреАрд╕реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЖрдк рдорд╛рди рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рджрд╕реНрдпрддрд╛рдПрдБ рджреГрд╢реНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреА рдФрд░ рджреГрд╢реНрдп рдХреЗ рд╕рдорд╛рди рдЬреАрд╡рди рдЪрдХреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреАред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд╛ рдЙрдкрднреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдкрд░ рдореВрд▓реНрдп рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдореБрджреНрджрд╛ рд╣реИред рдХреЛрдгреАрдп рд╕рдВрдХрд▓рдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдпрд╣ рдХреБрдЫ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛;)

рдореЗрд░рд╛ рдорддрд▓рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдФрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдереА, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХрднреА рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рдж рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрдИ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдХреА рдмрд╛рдд рд╣реИ... рдЪрд╛рд╣реЗ рдЖрдк n рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ 1 рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА n рд╕рджрд╕реНрдпрддрд╛рдПрдБ рд╣реИрдВред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ 1 рд╡рд┐рд╖рдп рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрддрд╛ рдореЗрдВ рдПрдХ рдирдХреНрд╢рд╛ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рдХреЗрд╡рд▓ n рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдХрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╣рд╕ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреНрдпрд╛рди рдЦреЛ рджреЗрдВрдЧреЗред

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

рдпрд╣рд╛рдБ рд▓рд┐рдВрдХ рдлрд┐рд░ рд╕реЗ рд╣реИ: https://stackblitz.com/edit/angular-observableinput?file=observablechanges%2Fimpl.ts

рдЖрдк рдорд╛рди рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рджрд╕реНрдпрддрд╛рдПрдБ рджреГрд╢реНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреА рдФрд░ рджреГрд╢реНрдп рдХреЗ рд╕рдорд╛рди рдЬреАрд╡рди рдЪрдХреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреАред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд╛ рдЙрдкрднреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдареАрдХ рд╣реИ, рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рд╕рднреА рд╕рджрд╕реНрдпрддрд╛рдПрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЪрд┐рдВрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ 99% рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдПрд╕рд┐рдВрдХ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдХреНрд╕рд░ рд░реЗрдбрдХреНрд╕/рдЖрджрд┐ рд╕реЗ рдХрдВрдмрд╛рдЗрдирдЯреЗрд╕реНрдЯ/рд╕реНрд╡рд┐рдЪ рдореИрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдореЗрдВ рд╕реНрд░реЛрдд рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╣рд╕ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреНрдпрд╛рди рдЦреЛ рджреЗрдВрдЧреЗред

рдареАрдХ рд╣реИ, рдЖрдкрдиреЗ рдПрдХ рдЕрдорд╛рдиреНрдп рдЖрд▓реЛрдЪрдирд╛ рдЙрдард╛рдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

~ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореВрд▓ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ https://github.com/angular/angular/issues/12756#issuecomment -260804139, рдЖрдк рдХрдХреНрд╖рд╛ рдХреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП ngOnDestroy() { super.ngOnDestroy() } рдФрд░ ngOnChanges рд▓рд┐рдП рдПрдХ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред ~ <- рдХреБрдЫ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп 4.4 рдХреЗ рд░реВрдк рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрд╕рд┐рдВрдХ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рд╣реИ рдФрд░ рдЪреВрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЗрдирдкреБрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреЛрдИ рд╕рдордЭ рдореЗрдВ рдЖ рд░рд╣рд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЗрдирдкреБрдЯ рдорд╛рди рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕реАрдзреЗ рдЗрдирдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдФрд░ рдПрд╕рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдПрдХ рдирдпрд╛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдареАрдХ рд╡рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдХрд╣реАрдВ startWith рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ рдмрдпрд╛рди рдареАрдХ рд╣реИ:

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

рдпрд╣ рдХреЛрдб рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреЙрдХ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдЯреИрдХрдмреНрд▓рд┐рдЯреНрдЬ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рд╛ рд╣реИред
рддреЛ рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдерд╛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдПрдУрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рд╣реИред
рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдУрдЯреА (рдХреЛрдгреАрдп v4.3.6, cli v1.4.1) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╡рд╛рд▓реЗ changes рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╕реЗ рдЬрд╛рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдорд┐рд▓рддреА рд╣реИ: рдЬрдм рдХреЛрдИ рдЗрдирдкреБрдЯ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ, рдЬрдм рдХреЗрд╡рд▓ 1 рдЗрдирдкреБрдЯ рдмрджрд▓ рдЬрд╛рдП, рдЬрдм рдЗрдирдкреБрдЯ рдХреА рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛, рдЬрдм рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рд╕реЗ рджреВрд╕рд░реЗ рдЖрджрд┐ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ ...
рдЖрдк рдЬреЛ рдЕрд╡рд▓реЛрдХрдиреАрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 1 рд╡рд┐рд╖рдп рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдо 1 рдкреНрд░рддрд┐ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рд╕рдВрдкрддреНрддрд┐ рд╣реИред

рдЬреЛ рдЪреАрдЬ рдореИрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╕рд┐рд░реНрдл рдирдП рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ SimpleChanges рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдпрдж pair рдФрд░ map рдХрд╛ рдЙрдкрдпреЛрдЧ SimpleChange рдХреЗ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИред SimpleChanges рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред

рдкреБрдирд╢реНрдЪ:

рдареАрдХ рд╣реИ, рдЖрдкрдиреЗ рдПрдХ рдЕрдорд╛рдиреНрдп рдЖрд▓реЛрдЪрдирд╛ рдЙрдард╛рдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп ред

рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИ рдЬрдм рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпреЗ рд╡рд╕реНрддреБрдирд┐рд╖реНрда рдорд╛рдкрди рдпреЛрдЧреНрдп рддрдереНрдп рд╣реИрдВред рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 6 рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3 рд╡рд┐рд╖рдп рдЕрдзрд┐рдХ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рд╕рд╣реА рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реНрдХрд╕рдВрдЧрдд рдЖрдзрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдЖрдк рдХреБрдЫ рдорд╛рдк рдирд╣реАрдВ рдХрд░рддреЗред

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

рдпрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рдХрдорд┐рдпреЛрдВ рдФрд░ рд▓рд╛рднреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

import { OnChanges, OnDestroy, SimpleChanges } from '@angular/core'
import { BehaviorSubject } from 'rxjs/BehaviorSubject'
import { Observable } from 'rxjs/Observable'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/distinctUntilChanged'

export class ChangeObserver implements OnChanges, OnDestroy {
  protected ngChanges = new BehaviorSubject<object>({})

  ngOnChanges(changes: SimpleChanges) {
    const props = { ...this.ngChanges.value }
    for (const propName in changes) {
      props[propName] = changes[propName].currentValue
    }
    this.ngChanges.next(props)
  }

  ngOnDestroy() {
    this.ngChanges.complete()
  }

  changes<K extends keyof this>(key: K): Observable<this[K]>
  changes<V>(key: string): Observable<V>
  changes(key: string) {
    return this.ngChanges.map(props => this.ngChanges.value[key]).distinctUntilChanged()
  }
}

рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

class MyComponent extends ChangeObserver {
  @Input() public field: string
  // typescript knows this is Observable<string>
  field$ = this.changes('field')

  @Input() private privField: number
  // typescript can't access private stuff from outside the class so we need to help it out
  privField$ = this.changes<number>('privField')
}

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдПрд╕рд┐рдВрдХ рдкрд╛рдЗрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
[inputVar]="observableValue | async" ..

@najibla рдЖрдкрдиреЗ рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП async рдкрд╛рдЗрдк рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@ohjames рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╣ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП async рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрдм рдореИрдВ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдореВрд▓реНрдп рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдорд╛рди рдмрд╛рд▓ рдШрдЯрдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

@najibla рдпрд╣ @Input рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╛рдиреА рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЪрд╛рд╣реЗ рдПрдХ рдШрдЯрдХ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдПрдХ рдШрдЯрдХ рдореЗрдВ рд╣реА рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рдорд╛рдиреНрдп "рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкрд╣рд▓реЗ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдмрд╛рдзрд╛рдУрдВ рдкрд░ рд╣реИред

@icepeng рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рд╡рд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣ рдПрдХ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдХреЛ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рддреЛ рдирдпрд╛ рдкреИрдЯрд░реНрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрдЧрд╛:

<app-child [prop]="prop$ | async"></app-child>

... рддреЛ рдпрд╣ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ prop рдЕрдВрджрд░ AppChildComponent рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдпрджрд┐ рдпрд╣ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдерд╛ рддреЛ рдЖрдкрдХреЛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ ) рдЕрдм рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрджрд┐ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ prop$ рдерд╛ рддреЛ рдпрд╣ рд╕рдордЭрджрд╛рд░ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкрд╛рд░рд┐рдд рдЗрдирдкреБрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП index рд╕реЗ ngFor )ред

рдПрдХ рдЗрдирдкреБрдЯ (рдЬреЛ рдЕрднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ) рдХреЗ рд╕рд╛рде рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ OnPush рд╕рд╛рде рдХрд╛рдлреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@fxck рдареАрдХ рд╣реИ, рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ ngOnChanges рдХреЛ рддрдм рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЙрддреНрд╕рд░реНрдЬрди (рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЖрдк рдПрд╕рд┐рдВрдХ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ @Input рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ OnPush рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ async рдкрд╛рдЗрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдЪреЗрдВрдЬ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдВ, рдЗрд╕реЗ @icepeng рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@ohjames @fxck рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкрд╛рд╕ рдХрд░рдирд╛ рдЕрднреА рд╕рдВрднрд╡ рдерд╛, рдЧрд▓рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЧреБрдЬрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ @ObserveInput рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореВрд▓реНрдп рдЬреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдмрд╕ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдпред

@icepeng рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

<ng-container *ngFor="value in (values$ | async); let i = index">
  <child-component [value]="value" [index]="i"></child-component>
</ng-container>

рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдпрд╣рд╛рдВ index рдХреЛ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрднреЛрдЧ рдпреЛрдЧреНрдп рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП?

рдпрд╛ рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ)ред

рдРрд╕реЗ рдХрдИ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред

@ohjames index рдкреНрд░рддреНрдпреЗрдХ child-component рд▓рд┐рдП рд╕реНрдерд┐рд░ рдорд╛рди рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рд▓реЛрдЧ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреНрдпреЛрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

BehaviorSubject рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдгреАрдп рдХреЛрд░ рдЙрд╕ рддрд░рд╣ @NgChanges() рдбреЗрдХреЛрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

{
  @NgChanges() ngChanges$: BehaviorSubject<{ prop: string }>
  @Input() prop: string;

  ngOnInit() {
    this.ngChanges$.subscribe(changes => console.log(changes.prop));
  }
}

рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

1 рдХреА рдмрдлрд░ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд░реАрдкреНрд▓реЗрдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рд╖рдп рдХреЗ рдореВрд▓реНрдп рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдХреЛрдИ рднреА рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреБрдЫ рдПрдХрдореБрд╢реНрдд рдЯреВрдЯ рдЧрдП рд╣реИрдВ, рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рдкреАрдЖрд░ рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореЗрд░реЗ 2 рд╕реЗрдВрдЯ: рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВред рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдореВрд▓реНрдпрд╣реНрд░рд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдерд╛ (рд╣рд╛рдБ рдЖрдк рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдХрд╛рд░рдг рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛) рдФрд░ рдлрд┐рд░ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдПред $get(keyName) рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯред рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХреЗрд╡рд▓ рдХреЛрдгреАрдп рд╡рд░реНрдЧ рдПрдХред

import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';

/**
 * Extends this class to be able to observe any key affectation
 */
class ObservableProxy {
    private changes: Subject<[PropertyKey, any]> = new Subject<[PropertyKey, any]>();

    constructor() {
        return new Proxy(this, {
            set: (object, key, value) => {
                this.changes.next([key, value]);
                object[key] = value;
                return true;
            }
        });
    }

    public $get<K extends keyof this>(key: K): Observable<this[K]> {
        const value: this[K] = this[key];

        const startWith: Observable<this[K]> = Observable.of(value)
            .filter((initialValue) => // remove this filter if you dont mind receiving an undefined value on subscription
                initialValue !== undefined;
            );

        return this.changes
            .filter(([changedKey]) => {
                return changedKey === key;
            })
            .map(([changedKey, nextValue]) => nextValue)
            .merge(startWith);
    }
}

рдЙрджрд╛рд╣рд░рдг:

class User extends ObservableProxy {
public name: string;
}

const user: User = new User();
user.$get("name").subscribe((value)=> {
console.log(value);
})

user.name = "toto"; // prints console.log("toto")

@robwormald , рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдХрд░реНрд╖рдг рд╣реИ? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдЧрд╛ред

@bryanrideshark рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛ https://github.com/angular/angular/issues/10185 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдкреАрдЖрд░ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рддрдм рддрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рд╣рдо рдЖрдЗрд╡реА рдХреЛ рд╢рд┐рдк рдирд╣реАрдВ рдХрд░ рджреЗрддреЗ
рдмреБрдзрд╡рд╛рд░, 21 рдлрд░рд╡рд░реА, 2018 рдХреЛ рд╕реБрдмрд╣ 7:56 рдмрдЬреЗ рдЬреЗрдореНрд╕ рдкрд╛рдЗрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@bryanrideshark https://github.com/bryanrideshark рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛
рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ #10185 . рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
https://github.com/angular/angular/issues/10185 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐
рдкреАрдЖрд░ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/angular/angular/issues/5689#issuecomment-367372931 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAgpkvtGA4w8uHgiz0QsdYwBgqgM2EpAks5tXDyWgaJpZM4Gwr8f
.

рдЖрдкрдХреА рдЕрдВрдЧреНрд░реЗрдЬреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдХреЛрдгреАрдп рдмрдбрд╝рд╛ рд╣реИред

@ pldin601 рдЖрдкрдХреА рд╡рд┐рдзрд┐ observable-input рдкреИрдХреЗрдЬ рджреЗрдЦреЗрдВ рдЬреЛ AOT рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@ pldin601 рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ ngOnDestroy рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдПрдУрдЯреА рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЗрд╡рд▓ ngOnDestroy рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрдХрд▓рдХ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреА рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧреА рдЬрдм рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ ngOnDestory рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд▓реАрдХ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдХрдЪрд░рд╛ рдПрдХрддреНрд░ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзрд╛рд░рд╛ 3.2 рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрдЧрд╛ (рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛)?
https://is-angular-ivy-ready.firebaseapp.com/#/status

рдХреНрдпрд╛ рдЖрдЗрд╡реА 7.0.0 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧреА?

рдореИрдВрдиреЗ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╕рд╛рдереА рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдмрд╛рдВрдз рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдгреАрдп рдЗрдирдкреБрдЯ рдЧреБрдгреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдкрддреНрддрд┐ рдкрд░ рднреАред рдпрд╣ @ohjames рдХреЗ @ObservableInput() рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ , рд▓реЗрдХрд┐рди рдмрд╕рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рдХрд╛рд░ рдмреЗрдореЗрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com/PSanetra/bind-observable

рдЙрджрд╛рд╣рд░рдг:

class MyClass {

  @BindObservable()
  public myProp: string = 'initialValue';
  public myProp$!: Observable<string>;

}

const myInstance = new MyClass();

myInstance.myProp$.subscribe(console.log);

myInstance.myProp = 'newValue'

рдпрд╣ рдХреЛрдб рдХрдВрд╕реЛрд▓ рдкрд░ 'initialValue' рдФрд░ 'newValue' рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рдЕрдкрдбреЗрдЯ observable-input рдкреИрдХреЗрдЬ рдмрд┐рдирд╛ рдХреБрдЫ рддреЛрдбрд╝реЗ + рдмрд┐рдирд╛ рд╕рдмрдХреНрд▓рд╛рд╕рд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред @ohjames рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрд┐рддрдирд╛ рд╕реНрдерд┐рд░/рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдЕрдзрд┐рдХ рдкрд░рд┐рдкрдХреНрд╡ рд╣реЛрдЧрд╛, рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд░рдВрддрд░ рд╕рдорд░реНрдерди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдФрд░ рдмреЗрд╣рддрд░ рджреЗрд╡ рдЕрдиреБрднрд╡/рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреВрд░реНрдг rxjs * рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреБрд╢ рдЪреЗрдВрдЬ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ (рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдЧреНрд░рд╛рдЙрдВрдбрдмреНрд░реЗрдХрд┐рдВрдЧ рдлреАрдЪрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)

*рдЧреИрд░-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╛ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛: рд╕реЗрдЯрд░ рдХреЙрд▓рд┐рдВрдЧ рдиреЗрдХреНрд╕реНрдЯ рдСрди рд╕рдмреНрдЬреЗрдХреНрдЯ

рдПрдУрдЯреА рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдПрдВрдЧреБрд▓рд░ 4, 5 рдФрд░ 7 рдореЗрдВ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓-рдЗрдирдкреБрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рдерд╛ рддреЛ рдореИрдВ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░реЗрдВрдЧреЗ 2 рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдПрдирдкреАрдПрдо рдЙрди рд▓рд╛рднреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдбреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ

рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд observer рд╕рд╛рде рдПрд╕рд┐рдВрдХ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ

decalre function AsyncInput(bindName?:string) : <T extends Observer>(target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => any

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@AsyncInput()
asynchronusProperty1 = new Subject();

@AsyncInput()
asynchronusProperty2 = new ReplySubject(1);

@AsyncInput()
asynchronusProperty3 = new UserObserver(); // where UserObserver implement `Observer` interface

рдЬрдм рднреА рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдХреЛрдгреАрдп рдЖрдВрддрд░рд┐рдХ рдХреЗрд╡рд▓ observer.next(newValue) рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@HostBinding рд╕рдорд░реНрдерди рдХреЛ рднреА рди рднреВрд▓реЗрдВ!

рдЗрд╕реЗ рдФрд░ рднреА рд╢рд╛рдирджрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ @Input рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рд╣рдо "рд╕рдЦреНрддрдкреНрд░реЙрдкрд░реНрдЯреА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" рдХреЛ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class MyComponent {
  inputData$: Observable<Data>;
  constant: string;

  constructor(
    @Input() inputData$: Observable<Data>,
    @Input() constantString: string
  ) {
    this.inputData$ = inputData$;
    this.constant = constantString;
  }

}

@benneq рдмрд╕ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

class MyComponent {
  constructor(
    @Input() private inputData$: Observable<Data>,
    @Input() private constantString: string,
  ) {}
}

@ maxime1992 рд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@ beenneq @ maxime1992 рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ?

@trotyl рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк @Input('paramName') private myParam: Observable<Data> рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@trotyl @benneq рд╣рд╛рдБ рдореЗрд░рд╛ рдмреБрд░рд╛ред рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ :zipper_mouth_face:

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ

@ElianCordoba рдпрд╣ HTML <input> рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЛрдгреАрдп @Input()

рдпрд╣ рдПрдХ рдЕрд▓рдЧ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рд░реВрдк рд╕реЗ рджрд░реНрджрдирд╛рдХ рдореБрджреНрджрд╛ рд╣реИ @ElianCordobaред https://github.com/angular/angular/issues/13248

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

рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдмрдЧ рдФрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрд╣ рдЧрд▓рдд рдЗрдирдкреБрдЯ рдХреЛ рдЪреБрдк рдХрд░рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЬреЛ рдЧреИрд░-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рд╣реИ)ред рдпрд╣ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ rx рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрдард╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдЗрдирдкреБрдЯ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рдЬреЛ рдЙрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдкреБрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдмреНрд░реЗрдирд░ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд╣ рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ (рдореВрд▓реНрдп) рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдШрдЯрдХ рдиреЗ рдРрд╕рд╛ рдХрд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА рдпрд╣ рдореВрдХ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ rxjs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ angular.http рдФрд░ рд░рд╛рдЙрдЯрд░ рд╡реЗрдзрд╢рд╛рд▓рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдФрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ рдХреА рджреБрдирд┐рдпрд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░ рдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЙрдкрд░реЛрдХреНрдд рдХреБрдЫ рдЪрддреБрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рдорд╛рдирдХ' рддрд░реАрдХреЗ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреБрдирд░реНрдЧрдарди рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯрддрд╛/рдЕрдирд╛рдбрд╝реАрдкрди рдХреА рдХрдореА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЕрднреА рднреА рдХрд┐рд╕реА рджрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рдЖрдзрд┐рдХрд╛рд░рд┐рдХ' рдкреЛрд╕реНрдЯ-рдЖрдЗрд╡реА рддрд░реАрдХреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@Input('isOuterPanel')
set isOuterPanel(value: CheckoutPanelHeaderSettings)
{
    this.inputs.outerPanel$.next(value);
}

@Input('config')
set config(value: CheckoutPanelHeaderSettings)
{
    this.inputs.config$.next(value);
}

// observables for <strong i="6">@Inputs</strong>
inputs = {
    config$: new BehaviorSubject<CheckoutPanelHeaderSettings>(1),
    outerPanel$: new BehaviorSubject<CheckoutPanelHeaderSettings>(1)
};

рдлрд┐рд░ рдЖрдк RxJS рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ combineLatest(this.service.magicInput$, this.inputs, config$)...... рдЬреИрд╕рд╛ рдХреБрдЫ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╛ рддреЛ BehaviorSubject рдпрд╛ ReplaySubject рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рд╖рдп рдЖрдорддреМрд░ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реЛрддрд╛ рд╣реИред

  • рд╡реНрдпрд╡рд╣рд╛рд░рд╡рд┐рд╖рдп - рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • ReplaySubject - рдпрджрд┐ рдЖрдк рдЗрдирдкреБрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рд╣реЛрдЧрд╛

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


рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рд╕реЗрдлреНрдЯреА рдХреЗ рд╕рд╛рде рдФрд░ рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рд╣реИ)ред

// define this globally to 'unwrap' a property 'inputs' with an object of ReplaySubject / BehaviorSubject
export type InputTypes<T extends { inputs: { [key: string]: ReplaySubject<any> | BehaviorSubject<any> } }> = {
    [P in keyof T['inputs']]: T['inputs'][P] extends Observable<infer X> ? X : unknown;
}
// define a local 'InputType' helper above each component
type InputType = InputTypes<CheckoutSmartHeaderComponent>;

рдлрд┐рд░ рдЖрдкрдХреЛ @Input рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@Input('config')
set config(value: InputType['config$'])
{
    this.inputs.config$.next(value);
}

рдореИрдВ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП inputs рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ObservableInputs рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЦрд░рд╛рдм рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@simeyla рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯред

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╡рд╣рд╛рдВ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдпрд╣ рд╣реИ: https://www.npmjs.com/package/@ng-reactive/async -input

рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди

npm install @ng-reactive/async-input --save

рдкреНрд░рдпреЛрдЧ

import { Component, Input } from '@angular/core';
import { AsyncInput } from '@ng-reactive/async-input';
import { BehaviorSubject } from 'rxjs';

@Component({
  selector: 'app-hello',
  templateUrl: './hello.component.html',
  styleUrls: ['./hello.component.css']
})
export class HelloComponent {
  @Input() name: string;
  @AsyncInput() name$ = new BehaviorSubject('Default Name');

  constructor() {
    this.name$.subscribe(name => console.log('from async input', name));
  }
}

@ рдПрдордПрдлрдкреА 22 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдореБрдЭреЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдлрд╡рд╛рдИрдЖрдИ, рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдирдкреАрдПрдо рдкрд░ рдЬреАрдердм рд▓рд┐рдВрдХ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдпрд╣ рдпрд╣рд╛рдВ рдЬрд╛рддрд╛ рд╣реИ:

https://github.com/mfp22/async-input/tree/master/projects/async-input

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдЕрджреНрднреБрдд рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХреЛрдгреАрдп рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред

рдЗрд╕рд╕реЗ рднреА рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ OnChanges рд╣реБрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдЗрдирдкреБрдЯ рдХреЗ рдкрд┐рдЫрд▓реЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП pairwise rxjs рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

@Component({...})
class MyReactiveComponent {
  @ObservableInput() prop: Observable<string>; // Whatever syntax may be...

  // emits [prevValue, currValue] and no OnChanges hook yay!!
  propChanges$ = this.prop.pipe(pairwise());
}

https://github.com/rx-ts/ngrx/blob/master/src/utils/decorators.ts#L56 -L124

рдпрд╣ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЛ npm рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

https://github.com/futhark/ngx-observable-input

рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди

npm install ngx-observable-input

рдкреНрд░рдпреЛрдЧ

...
<image-item [url]="currentImageUrl"></image-item>
import { Component, Input } from "@angular/core";
import { ObservableInput } from "ngx-observable-input";
import { Observable } from "rxjs";

@Component({
    selector: "image-item",
    template: `<img [src]="url$ | async" />`
})
export class GalleryComponent {
    @ObservableInput() @Input("url") public url$: Observable<string>;

    ...
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдЕрджреНрднреБрдд рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХреЛрдгреАрдп рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред

рдЗрд╕рд╕реЗ рднреА рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ OnChanges рд╣реБрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдЗрдирдкреБрдЯ рдХреЗ рдкрд┐рдЫрд▓реЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП pairwise rxjs рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

@Component({...})
class MyReactiveComponent {
  @ObservableInput() prop: Observable<string>; // Whatever syntax may be...

  // emits [prevValue, currValue] and no OnChanges hook yay!!
  propChanges$ = this.prop.pipe(pairwise());
}

рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдереЛрдбрд╝реА рдЬрд╛рдВрдЪ рдХреА рд╣реИ рдФрд░ рдЙрд╕реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (@gund)ред

рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╣реЗрд▓реНрдкрд░ ( @ObservableInput ) рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ @Input рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд░рдЪрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рднреА)ред рдореИрдВ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :)

рдпрд╣рд╛рдВ рдПрдХ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

@Component({
  selector: 'app-test',
  template: `<span>{{ message$ | async }}</span>`
})
class TestComponent {
  @ObservableInput<number>('price') price$: Observable<number>;
  @ObservableInput<string>('name') name$: Observable<string>;

  message$ = combineLatest(this.price$, this.name$).pipe(
    map(([price, name]) => `${name} costs {price}`)
  );
}

рдФрд░ рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

<app-test [price]="price"
          [name]="name">
</app-test>

@aleics рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ AOT рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?

@aleics рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ AOT рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?

рдирд╣реАрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ @Input рд╕рдВрдкрддреНрддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ CUSTOM_ELEMENTS_SCHEMA рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдЗрд╢реНрдпреВ 5 рд╕рд╛рд▓ рд╕реЗ рдЦреБрд▓рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

рдЖрдЗрд╡реА рдЕрдВрдд рдореЗрдВ рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ? рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛ рдХреГрдкрдпрд╛!

рдУрдПрдордЬреА рдореИрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ ngOnChanges рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ

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

@ etay2000 рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЖрдк rxjs рдХреЗ рд╕рд╛рде рдХреЛрдгреАрдп рдореЗрдВ 75% рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдореМрд▓рд┐рдХ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдШрдЯрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП, рдЕрдЪрд╛рдирдХ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореЗрдВ рдордЬрдмреВрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рджреБрдирд┐рдпрд╛ред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрднреА рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рддреЛ 4 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдпрд╣ рдореБрджреНрджрд╛ рдореБрдЭреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреА рдХрдореА рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдХреЛрдгреАрдп рдФрд░ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рджреВрд░ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдЖрдк рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж cycle.js рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рднреА rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж Vue рд╣реИред рдЖрдзреЗ рд╕рдордп рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рджреВрд╕рд░реЗ рдЖрдзреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рди рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдПрдХ рдЙрдЪреНрдЪ рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрдореВрд░реНрдд рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ

рдЖрдВрддрд░рд┐рдХ Google рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ -> рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реЛрдирд╛ -> рдРрдк рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ -> рдХреБрдЫ рднреА рдЬреЛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ -> рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

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

рд╕реНрд░реЛрдд: https://medium.com/@jeffbcross/jeffs-letter-to-the-angular-team-and-community-5367934a16c9)

рдмрд╕ рдХреБрдЫ рд╕рдмрд╕реЗ рдКрдкрд░ рдЙрдард╛рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рдкреНрд░рд╕реНрддрд╛рд╡: рдирдореВрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ #5689

5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

рдЯреЗрдореНрдкреНрд▓реЗрдЯ #13248 . рдореЗрдВ рдХреЛрд▓реНрдб рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 1 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ - рдЖрдЗрд╡реА рдХреЗ рдЙрддрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡: рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдХ рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ #10185

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡: рдШрдЯрдХ рдШреЛрд╖рдгрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред #8785

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

as local-val рдмрд┐рдирд╛ *рдПрдирдЬреАрдЖрдИрдПрдл #15280 . рдХреЗ

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди #8563

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

рдПрдирдЬреА-рд╕рд╛рдордЧреНрд░реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рдордЧреНрд░реА #12530

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ - рдХрднреА рдирд╣реАрдВ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреНрдЮрд╛рддред

рдлрд┐рд░ рдШрдЯрдХреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬреЛ рдЙрдЪреНрдЪ рдХреНрд░рдо рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдлрд┐рд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдФрд░ рд╕рдмрд╕реЗ рдКрдкрд░ рдЙрдард╛рдП рдЧрдП рдореБрджреНрджреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрд░реНрдерд╛рдд, рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрдЗрд╡реА рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ) ), рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдврд╛рдВрдЪреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХреЗ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рддрд░реНрдХ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рджрд┐рдпрд╛ рдЧрдпрд╛ ngrx рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди lib рд╣реИ)ред

рдореЗрд░рд╛ рдРрдк рдЖрдзрд╛ рдмреЗрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ рд╣реИ (рдХреЗрд╡рд▓ рддрдХрдиреАрдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рдХреБрдЫ рдХреЛ рдХреЗрд╡рд▓ рдХреЛрд░ рдореЗрдВ рдареАрдХ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) "рдкреЙрд▓реАрдлрд┐рд▓" рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╣реИрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рджрд┐рди рдХреЛрдгреАрдп рдореВрд▓ рдореЗрдВ рдбреНрд░реЙрдк рдХрд░ рдкрд╛рдКрдВрдЧрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдЖрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

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

рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрд╡рдпрдВ рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдореИрдВ рд╣реВрдБ
рдХреЛрд╡рд┐рдб рдмрд╛рдд рдХреЗ рджреМрд░рд╛рди рдмреЛрд░рд┐рдпрдд рд╕реЗ рдорд░рдирд╛, рдХреМрди рдореЗрд░реЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдерд╛, рдЙрджрд╛ред https://github.com/insidewhy/observable-input

рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдХрд▓рдХ рдпрд╛ рдХреЛрдгреАрдп рдХреЗ рдЕрдиреНрдп рдЖрдВрддрд░рд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдЧрд┐рдирддреА рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд▓реЛ рдХреЛрдгреАрдп рдореЗрдВ рдЙрдЪрд┐рдд рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВ
рд╕рд╛рд░ред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИред рджрд░рдЕрд╕рд▓, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЫреВрдиреЗ рдХреА рднреА рдЬрд░реВрд░рдд рдкрдбрд╝реЗрдЧреАред

@ganqqwerty рдореИрдВрдиреЗ рдЙрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХреЛрдгреАрдп рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдгреАрдп рдмреЗрд╣рдж рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рд░рд┐рдПрдХреНрдЯ рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рдЧрд▓ рдкрд╛рдВрдЪ-рд╕реМ-рд▓рд╛рдЗрди-рд▓рдВрдмреЗ-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ "рдкрд░рд┐рд╖реНрдХреГрдд" рд╣реИред рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдЙрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрддреА рдЕрдЧрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╛рд░реНрдердХ рдерд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ @fxck рдХреЗ рдКрдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рдареАрдХ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдХреЛрдгреАрдп рдЯреАрдо рд╕рдореБрджрд╛рдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╕реБрдирддреА рд╣реИ, рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреЛрдгреАрдп рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрд╕ рдврд╛рдВрдЪреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдореБрдЭреЗ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдВрдЧреБрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд┐рди рдкрд░ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рднреА рдФрд░ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЗрд╕рд╕реЗ рдмрдЪреЗрдВред

рдпрд╣ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдПрдВрдЧреБрд▓рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ Google рдХреЗ рдХрдИ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЕрдиреНрдп рдЬреЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз @fxck Google рдореЗрдВ рд╕реНрдерд╛рдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдпрджрд┐ рдЖрдк рдбрд╛рд░реНрдЯ рдпрд╛ рдЧреЛрд▓реИрдВрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд╣реБрдд рдкреНрд░рд╕рд┐рджреНрдз рдЖрдо рддреМрд░ рдкрд░ рд╕рд╛рдордирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЙрдард╛рддреЗ рд╣реИрдВ рдФрд░ рдореБрджреНрджреЛрдВ рдХреЛ 5+ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд░рдЦрддреЗ рд╣реИрдВред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╛рд╣, рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдирдлрд░рдд рдереЛрдбрд╝реА рдЬреНрдпрд╛рджрд╛ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред @Input рд╕реЗ рд╕рдЬрд╛рдП рдЧрдП рдПрдХ рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рд╖рдп рдЬрд┐рд╕ рдкрд░ рдЖрдк рдореВрд▓реНрдпреЛрдВ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ:

https://github.com/angular/angular/issues/5689#issuecomment -507001686

рдпрджрд┐ рд╡рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕рд░рд▓ рддреГрддреАрдп рдкрдХреНрд╖ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

https://github.com/Futhark/ngx-observable-input

рдореИрдВ рдХреЛрдгреАрдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдЦреБрд╢ рд╣реВрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЫреЛрдЯреА (рдпрджреНрдпрдкрд┐ рд╡рд╛рдВрдЫрдиреАрдп) рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдврд╛рдВрдЪреЗ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝реВрдВрдЧрд╛

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

рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрди рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рддреБрд░рдВрдд рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред

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

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╢реАрд░реНрд╖ 25 (рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА) рдКрдкрд░ рдЙрдард╛рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рдкрд╛рд╕ effort рдЯреИрдЧ рднреА рд╣реИред рдмрд╕ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ, рд╕рдореБрджрд╛рдп рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЗрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

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

// рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдХреНрдпрд╛ рдЖрдк рдЕрдЪреНрдЫреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рдкреЛрд▓ рдХреЛ рднрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рд╣реЛрдЧреА? рдЖрдкрдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХреА рдЧрдИ рд╕рднреА рдмрд╛рддреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ / рдЖрдкрдХреЗ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рдмрдирд╛рдПрдЧреА https://forms.gle/cprhx239kuqwWd5M8

@fxck рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдиреЗ рд▓рдЧрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╕рднреА рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рд╡рд╣реА рдХрд░реЗрдЧреА рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЬрдмрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд▓реЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЖрд╡рд╛рдЬ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рдореБрджреНрджреЛрдВ рдХреЗ рддрддреНрдХрд╛рд▓ рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 4-5 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдпрд╛ рдЬрдм рддрдХ рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреИрд░-рдкреЗрд╢реЗрд╡рд░ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдХреЗрд▓реЗ Google рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрд▓реЗ рдореБрджреНрджреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ 'рдлрд┐рдХреНрд╕реНрдб рдмрд╛рдп рдЖрдЗрд╡реА' рдЯреИрдЧ рдЬреЛрдбрд╝рдХрд░ рдХреБрдЫ рд╕рдордп рдЦрд░реАрджрд╛, рдлрд┐рд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдп рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдореЗрдЯ рджреЗрддрд╛ рд╣реИред

@chriszrc рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ 'рдирдлрд░рдд' рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рд╣реИред рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рдЕрдВрддрддрдГ рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдХреБрдВрдард╛рдУрдВ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдордп рдореЗрдВ рд╡рд░реНрд╖реЛрдВ рддрдХ рдореБрджреНрджреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдирд╛ред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдВрдкрд░реНрдХ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдХреНрдпрд╛ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХреЛ рдХрд┐рд╕реА рдФрд░ рд╕реЗ рдЗрддрдирд╛ рдмреЗрд╣рддрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреНрдпрд╛ рд╣реИ?

@chriszrc рдореБрдЭреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреЛрдИ рдирдлрд░рдд рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ, рдмрд╕ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛" рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрдиреБрд░реЛрдз рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░рд╛рд╢рд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдПрдХ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдХреЛ рдирд┐рд░рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдмрд▓реНрдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рдореБрджреНрджреЛрдВ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЧреНрд░рд╣ рдХреЛ @fxck рдиреЗ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдЪреБрдкреНрдкреА рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдХреБрдЫ рд╕рдордп рд╕реЗ рд╣рдореЗрдВ рджреЛ рдУрд░реНрдереЛрдЧреЛрдирд▓ рдЕрдиреБрд░реЛрдз рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ:

  1. рдврд╛рдВрдЪреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА RxJS рд╕рдорд░реНрдерди
  2. рдХреЛрдгреАрдп рдореЗрдВ рдХрдо RxJS, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ

рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдз рд╣рдорд╛рд░реЗ рд░рдбрд╛рд░ рдкрд░ рд╣реИрдВ, рдФрд░ рджреЛрдиреЛрдВ рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдкрд╣рд▓реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдХреЗ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ, рдЕрд░реНрдердкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдореГрджреНрдз рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдирдП рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдХреЛ рдХрдо рд╕реБрд▓рдн рдмрдирд╛ рджреЗрдВрдЧреЗред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдгреАрдп рдРрдкреНрд╕ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ RxJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрднрд╡ рд╕реНрддрд░реЛрдВ рд╡рд╛рд▓реЗ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╕реА рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдкреАрдЖрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдВрдЧреБрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдХреБрдЫ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВ, рдФрд░ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдпрд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдХреЛрдгреАрдп рдХреЗ рдореВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ngrx - рдХреЛрдгреАрдп рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рд╕реНрддрд╛рд░) рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдирд┐рдХрдЯ рд╕рд╣рдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

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

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

@mgchev рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ rxjs рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдкрд┐рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡реЛрдЯ рдирд╣реАрдВ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд░рд╛рдЬреНрдп-рд╕реНрдЯреЛрд░/рд░реЗрдбрдХреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИ? рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ ngrx рд╕реЗ ngxs рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ (рдЬреЛ рдХрд┐ рдХрдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рдерд╛, рдФрд░ рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ "рдХреЛрдгреАрдп") рдФрд░ рдлрд┐рд░ рдЕрдВрдд рдореЗрдВ рдЕрдХрд┐рддрд╛ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рдкрд╕рдВрджреАрджрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╛ рдЕрдЧрд░ рдпрд╣ ngrx рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо ngrx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рд╣реИрдВ-

рдпрджрд┐ rxjs рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдкрд┐рд╕ рджреВрд╕рд░реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡реЛрдЯ рдирд╣реАрдВ)

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдореИрдВ рд╕рд┐рд░реНрдл рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рдЕрдзреВрд░реА рд╕реВрдЪреА рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджрд╛рдпрд░реЗ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХреВрдВред

@mgchev рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "рдкрджрд╛рд╡рдирдд" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА рдХрд╛ рдирд╛рдЧрд░рд┐рдХ рдмрди рдЬрд╛рдПрдЧрд╛?

@mgchev рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рджрд░реНрдж рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдлрдЯрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реА рдЯреАрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдпрд╣рд╛рдВ рд╣реЛрдВрдЧреА:

  • рдЕрдирд┐рд╡рд╛рд░реНрдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ (рдкреВрд░реНрдг рдкреНрд░рдХрдЯреАрдХрд░рдг рд╣рдордиреЗ рдЕрдм рддрдХ рдЕрдХрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА 50+ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ)
  • рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдХреЛрдИ рдЕрдВрддрд░рд╛рд▓ / рджреЗрд░реА рдирд╣реАрдВ)
  • рдХреЛрдИ "рдкрд╕рдВрджреАрджрд╛" рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рднреА рдХреЛрдгреАрдп рдХреЛ рджреЗрд╢реА рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
  • рдХреЛрдгреАрдп рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди (рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рдХреА рд╣рд╛рд░реНрдб рд╕реНрдЯреЙрдк рдЧреНрд░рд╛рд╣рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)

рдКрдкрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░:

  • 2 рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

    • рдХреЛрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп + рдПрдбрдСрди рд░рд┐рдПрдХреНрдЯрд┐рд╡

    • рдХреЛрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ + рдПрдбрдСрди рдЕрдирд┐рд╡рд╛рд░реНрдп

  • рдЗрд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд▓рдкреЗрдЯрдирд╛ рдмрд╣реБрдд рд╕реАрдзреЗ рдЖрдЧреЗ рд╣реИ, рдРрд╕рд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд╣реИ
  • рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЛрд░ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдРрдбрдСрди рдореЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рдПрдкреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ
  • рд╢реВрдиреНрдп рд╡рд┐рд▓рдВрдм рдХреЗ рдХрд╛рд░рдг + рдХреЛрдИ рдкрд╕рдВрджреАрджрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдПрдбрдСрди рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рджреБрдирд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╣реИрдВред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ:

  • рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдирд┐рдХрд╛рд▓рдиреЗ рдкрд░ рдЙрддрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ 50+ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреВрд╕рд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдлрд┐рд░ рд╕реЗ рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдЧрд╛, рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдирд╣реАрдВ)
  • рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣рдореЗрдВ (рд╕рдореБрджрд╛рдп рдХреЛ) рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╣рд╛рдВ рдЙрддрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдФрд░ рдврд╛рдВрдЪреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдХреГрдкрдпрд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝реЗрдВ

@mgchev рдореБрдЭреЗ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЛ рджреБрдирд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рдорд╛рди рдФрд░ рд╕реАрдзреЗ рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рд╕рдВрдпреЛрдЬрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ x рдПрдХ рднрдпрд╛рдирдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред рдФрд░ рдбреЗрд╡рд▓рдкрд░ y рдЗрд╕реЗ рдЕрдкрдиреЗ рдЗрддрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЙрд╕реЗ рдХрд┐рд╕реА рдПрдирдЬреАрдЖрд░рдПрдХреНрд╕ рдЧреЛрдВрдж рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рджреЛ рджреБрдирд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд╕реНрдорд╛рд░реНрдЯ рдШрдЯрдХ рдмрдирд╛рдо рдХреЗрдВрджреНрд░реАрдп рд░рд╛рдЬреНрдп рд╕реНрдЯреЛрд░ рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдЯреЛрд░/рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣реА рдПрдирдЬреАрдЖрд░рдПрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдврд╛рдВрдЪрд╛ рд╣реА рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ рд╕рдордп рд╕реЗ рд╣рдореЗрдВ рджреЛ рдУрд░реНрдереЛрдЧреЛрдирд▓ рдЕрдиреБрд░реЛрдз рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ:

  1. рдврд╛рдВрдЪреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА RxJS рд╕рдорд░реНрдерди
  2. рдХреЛрдгреАрдп рдореЗрдВ рдХрдо RxJS, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ

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

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдХреЛрдгреАрдп рдкреИрдХреЗрдЬреЛрдВ (HTTP, рд░рд╛рдЙрдЯрд░, рдлреЙрд░реНрдо) рдХреЗ рд▓рд┐рдП рдЧреИрд░-RxJS рд╕рдВрд╕реНрдХрд░рдг рднреА рдХреИрд╕реЗ рд╣реЛрдВрдЧреЗред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдЪреНрдЫреЗ рдЧреИрд░-рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рд╣реИред

рдХрд╣рдиреЗ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ .... рдЬрдм рддрдХ рдореИрдВ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, (2) рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред


рдкреАрдПрд╕ рдореИрдВ рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ "рдСрд░реНрдереЛрдЧреЛрдирд▓" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛; рдЕрдзрд┐рдХ "рд╡рд┐рдкрд░реАрдд" рдХреА рддрд░рд╣ред

рдХреЛрдгреАрдп рдореЗрдВ рдХрдо RxJS, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ

рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░ @mgchev , рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ

@pauldraper рдореИрдВрдиреЗ

рдЬреАрдердм рдкрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдЬрд╛рд░реЛрдВ рджреЗрд╡ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВред

image

image

рдпрд╣рд╛рдВ рдЙрд╕ рдлреЙрд░реНрдо рдХреЗ рдкрд░рд┐рдгрд╛рдо

рдЖрд╢реНрдЪрд░реНрдп рд░реВрдкреЛрдВ рдЧрдзрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рджрд░реНрдж @brandonroberts рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдФрд░ @MikeRyanDev рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреБрдЫ рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ, рдкрд┐рдЫрд▓реЗ рдкрд░ред

рдЬреАрдердм рдкрд░ рдЖрд░рдПрдХреНрд╕рдЬреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдЬрд╛рд░реЛрдВ рджреЗрд╡ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВред

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

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

рд╡реЗ рджреЗрд╡ рд╣реИрдВ рдЬреЛ рдПрдВрдЧреБрд▓рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд▓ рдЧрдП рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? :) рдФрд░ рдЬреЛ рдЗрд╕ рд╕рдордп рд╡реИрд╕реЗ рднреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИред рдХреЛрдгреАрдп рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЬреАрд╡рдирдЪрдХреНрд░, рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ, рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдЦреЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдмрд╕ рдЙрди рддреАрди рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд▓реЛрдЧ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реЛрдВрдЧреЗ, рдмрд╕ (рдФрд░ рдореВрд▓ рдкреИрдХреЗрдЬ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://indepth.dev/component-features-with-angular-ivy/ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ)ред

angular_rxjs

рдпрд╣ рд╕рдм рдХрд╣рддрд╛ рд╣реИред IMHO рдХреЛрдгреАрдп рдХреЛ рд╕реБрд╕рдВрдЧрдд рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдзрд┐рдХ RxJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдмрд┐рдирд╛ RxJS рдХреЗ рд╕рд╛рде рдпрд╣ рдХреЛрдгреАрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╡реЗ рджреЗрд╡ рд╣реИрдВ рдЬреЛ рдПрдВрдЧреБрд▓рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? :)

рд╣рд╛рдВ, рдХреЗрд╡рд▓ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рджрд┐рдЦрд╛рд╡рд╛ рд╣реЛрдЧрд╛ рдЬреЛ rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рднрд▓реЗ рд╣реА рдореИрдВ rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рджреЛрдиреЛрдВ рд╕реЗрдЯреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗред рдПрдВрдЧреБрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рд╣рдореЗрдВ рд╣реА рдХреНрдпреЛрдВ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдЬреЛ рдЕрд▓рдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдЦрд╛рд╕рдХрд░ рдЬрдм рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ рд╣реИрдВ, рдмрд╣реБрд╕рдВрдЦреНрдпрдХ рдирд╣реАрдВред

рдлрд┐рд░ рд╕реЗ, "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓" рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЬреАрд╡рди рдЪрдХреНрд░, рдЗрдирдкреБрдЯ, рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЖрдк рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдХреЛ рдмрд╣реБрдд рдЦреБрд╢ рдХрд░реЗрдВрдЧреЗред

рдФрд░ рдШрдЯрдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдЪрд╛рд╣реЗ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд╕рдВрдж рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВред

@fxck рдореИрдВ рдЗрд╕рд╕реЗ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рднреА рдЕрд╕рд╣рдордд рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЖрдкрдХреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЬрд╡рд╛рдм рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдРрд╕реЗ рдХрдИ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ rxjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП github рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрд▓рд╛ рд╣реИред

рдХреЛрдгреАрдп рдХреИрд╕реЗ рдХреЛрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рдирд╣реАрдВ, рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд┐рдкрд░реАрдд рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╡рд┐рдкрд░реАрдд рдкреИрдХреЗрдЬ рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @angular/reactive рдпрд╛ @angular/imperative - рдмреЗрд╣рддрд░ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЙрдореНрдореАрдж рд╣реИ)ред

рдЗрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдореБрджрд╛рдп рдореЗрдВ рдЬрд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдПрдХ рдорд╣рд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдврд╛рдВрдЪрд╛ рд╣реЛрдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдерд╛ред


рдПрдХ рддрд░рдл рдзреНрдпрд╛рди рджреЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд░рдЦрдирд╛ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреЛ рдмреНрд░рд┐рдЬ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреБрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдХреЛрд░ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рджреЛрдиреЛрдВ рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдмреЛрд▓рдирд╛ред

рдЕрд╕реНрд╡реАрдХрд░рдг: рдЖрдЦрд┐рд░реА рдмрд┐рдВрджреБ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ - рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореВрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ред

рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░ @mgchev , рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ

Google рдХреА рдЖрдВрддрд░рд┐рдХ рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ рдореИрдВ рдерд╛, рдЬрдм рдореИрдВ рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдЖ рдерд╛), рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЧреЛрдЧрд▓рд░реНрд╕ рдХреА рдЧреИрд░-рдЧреЛрдЧрд▓рд░реНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред

рд╣рдо рд╣рдЬрд╛рд░реЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реИрдВ - рдмрд╣реБрдд рд╕реА рдмрд╛рд╣рд░реА рдХрдВрдкрдирд┐рдпрд╛рдВ, рдЖрдВрддрд░рд┐рдХ рдЯреАрдореЗрдВ, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ RxJS рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп рдЬреЛ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рдХрд┐ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИред рджреЛрдиреЛрдВ рдЦреЗрдореЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░реАрди рддрд░реНрдХ рд╣реИрдВред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреЛрдгреАрдп рдРрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдпрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп (рдпрд╣ рдкреНрд░рддрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ) рдЕрддреНрдпрдзрд┐рдХ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛ред рдорд┐рд╢реНрд░рдг рдФрд░ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рдЧреИрд░ рдбреАрдЖрд░рд╡рд╛рдИ рдХреЛрдб (рдЬреИрд╕реЗ рдЧреИрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЗрдирдкреБрдЯ) рдмрдирд╛рддреА рд╣реИред

рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рджреЗрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╕рдордп рд╣реИред рдЗрд╕рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдгреАрдп рдХреЛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕реНрд╡реАрдЯ-рд╕реНрдкреЙрдЯ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реЛрдиреЗ рджреЗрддрд╛ рд╣реИ рдмрд╕ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдгреАрдп рдЬреИрд╕реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдХреБрдВрдЬреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдмрд╣реБрдд рд╕реАрдзреЗ рдЖрдЧреЗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рддрдм рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╡рд░ рдХреЗ рддрд╣рдд рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдХреЛрдгреАрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ рдХреЛрдгреАрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп "рд░реИрдкрд░" рдмрдирд╛рддрд╛ рд╣реВрдВред

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

@mgchev рдЪреВрдВрдХрд┐ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЛрд░/рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реБрдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдФрд░ рдпрджрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреИрд░ рд╣реИ?

рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ RxJS рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп рдЬреЛ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рдХрд┐ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИред рджреЛрдиреЛрдВ рдЦреЗрдореЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░реАрди рддрд░реНрдХ рд╣реИрдВред

рдмрдврд╝рд┐рдпрд╛, рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред RxJS рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЬрд╛рдиреЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ? рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЬреАрд╡рдирдЪрдХреНрд░, рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ рдФрд░ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЙрд╕рдореЗрдВ рдХреИрд╕реЗ рдлрд┐рдЯ рд╣реЛрддрд╛ рд╣реИ? рдФрд░ рдирд╣реАрдВ, рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб/рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдорд╛рдзрд╛рди" рдирд╣реАрдВ рд╣реИред

@fxck рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб/рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдорд╛рдзрд╛рди" рдирд╣реАрдВ рд╣реИред

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

  • рд╕рджрд╕реНрдпрддрд╛ рд▓реАрдХ
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ
  • рд╣реИрдХ рдЙрддрдирд╛ рд╣реА рдмреБрд░рд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ, рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдирд╛рдПрдВ рдФрд░ рднреА рдмрджрддрд░ рд╣реИрдВ, рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рд▓реНрдб рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореЛрдиреЛрд░реЗрдкреЛ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ) рдФрд░ рдЙрд╕рдХреЗ рдКрдкрд░ рднреА рд╣реИрдХ (рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдЬреАрд╡рдирдЪрдХреНрд░ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣реЗ, рдХреЛрдгреАрдп рдЙрд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) https://github.com/typebytes/ngx-template-streams/issues/8

рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдПрдВ рдпрдХреАрдирди "рд╕рдмрд╕реЗ рдЖрд╕рд╛рди" рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╛ рдХрд╕реНрдЯрдо рдбреЗрдХреЛрд░реЗрдЯрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

@fxck рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ (рдИрдШ) рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд╖реНрдЯ рдЬреАрд╡рди рдЪрдХреНрд░ рдШрдЯрдирд╛ (рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░) рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдШрдЯрдирд╛ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдПрдВ рдпрдХреАрдирди "рд╕рдмрд╕реЗ рдЖрд╕рд╛рди" рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╛ рдХрд╕реНрдЯрдо рдбреЗрдХреЛрд░реЗрдЯрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рднреА рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ (рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА рдФрд░ рдпрд╣ рдПрдХ рджрд░реНрдж рд╣реИред ~ рдмрд┐рдирд╛ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ 100 рд╣реИрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреЛрдгреАрдп рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдм рддрдХ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИрдХреНрд╕ рдпрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

@ tonivj5 рдпрджрд┐ рдШрдЯрдХ рд╕реБрд╡рд┐рдзрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рд╣реЛрдЧреА рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ?

@ntziolis рд╣рд╛рд╣ рдордЬрд╝реЗрджрд╛рд░ рдЖрдкрдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ngx-sub-form рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рднрд╛рдЧ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдЖрдЗрд╡реА рдХреЗ рд╕рд╛рде рдХрдВрдкреЛрдиреЗрдВрдЯ рдлреИрдХреНрдЯреНрд░реА рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдПрдирдЬреАрдПрдХреНрд╕-рд╕рдм-рдлреЙрд░реНрдо рдХреЗ рдмрд╛рд╣рд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХрд╛рдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджреВрдВрдЧрд╛

@ntziolis рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХрднреА рдЖрдЗрд╡реА рд╡рд╛рджреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╣реЛрддреЗ рджреЗрдЦреЗрдВрдЧреЗред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдгреАрдп рдкреНрд░рднрд╛рд╡ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ? (рдПрдирдЬреАрдЖрд░рдПрдХреНрд╕/рдЗрдлреЗрдХреНрдЯреНрд╕ рдирд╣реАрдВ) https://dev.to/stupidawesome/reactive-adventures-in-angular-introducing-angular-effects-1epf рдЗрд╕ рдЯреВрд▓ рд╕реЗ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рджреЛ-рддрд░рдлрд╛ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ
https://dev.to/stupidawesome/exploring-the-angular-effects-api-2gol
рд╡рд░реНрдЬрди 9.1.0 Vue 3 рдХреЗ рдХрдВрдкреЛрдЬрд┐рд╢рди рдПрдкреАрдЖрдИ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкреЛрдЬрд┐рд╢рди/рд╣реБрдХ рдореЙрдбрд▓ рдкреЗрд╢ рдХрд░реЗрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИред

@mgchev

рдпрд╣ рдХреЛрдИ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд▓реНрджреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕рдорд╛рдзрд╛рди/рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ

рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ, рд╣рдо рдХреМрди рд╣реИрдВ рдФрд░ рдХрд┐рддрдиреЗ Googler рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреЛрдгреАрдп рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВ?

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

рдХреНрдпрд╛ рдпрд╣ рддрдереНрдп рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдо рддреМрд░ рдкрд░ 2500 рдЦреБрд▓реЗ рдореБрджреНрджреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдВрддрд░рд┐рдХ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдХрднреА рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ?

@ntziolis , рдЬреИрд╕рд╛ рдХрд┐ @zakhenry рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ features рдорджрдж рдХрд░реЗрдЧрд╛

@ntziolis рдореИрдВрдиреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рд╣реИрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ POC рд╣реИ (рдмрд┐рдирд╛ рд╡рд░реНрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдФрд░ рди рд╣реА рдЬреАрд╡рдирдЪрдХреНрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (: рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ :)

@ tonivj5 рд╣рд╛рдБ рдореБрдЭреЗ рдЖрдкрдХрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рднреА рдЬрд╛рд░реА рдХрд░ рджрд┐рдпрд╛ рд╣реИ :) https://github.com/cloudnc/ngx-observable-lifecycle

рдЬрд┐рд╕ рдХрд╛рдо рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рд╣реЛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп libs рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬреАрд╡рди-рдЪрдХреНрд░ рдЬрд╛рдЧрд░реВрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рдПрдХ рд╣реА рд╣реБрдХ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдХрдИ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рддреЛ рдШрдЯрдХ рдбреАрдлрд╝ рдкрд░ рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реБрдХ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд╕ рд╕реАрдЖрдИ рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рддрдереНрдп рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдо рддреМрд░ рдкрд░ 2500 рдЦреБрд▓реЗ рдореБрджреНрджреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдВрддрд░рд┐рдХ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдХрднреА рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ?

рдпреЛрдЧреНрдп, 2019 рдХреЗ рдордзреНрдп рд╕реЗ 2500 рдЦреБрд▓реЗ рдореБрджреНрджреЗ рдирд╣реАрдВ рд╣реИрдВред

$ github_issue_stats history -i2m -n20 -sangular/angular

+-------------------------+--------------------+
|         period          |       issues       |
+-------------------------+--------------------+
| This month (2020-05)    | 2855 (+137, -112)  |
| Last month (2020-03)    | 2830 (+495, -550)  |
| 2 months ago (2020-01)  | 2885 (+601, -575)  |
| 3 months ago (2019-11)  | 2859 (+437, -352)  |
| 4 months ago (2019-09)  | 2774 (+411, -305)  |
| 5 months ago (2019-07)  | 2668 (+441, -369)  |
| 6 months ago (2019-05)  | 2596 (+488, -349)  |
| 7 months ago (2019-03)  | 2457 (+425, -373)  |
| 8 months ago (2019-01)  | 2405 (+428, -330)  |
| 9 months ago (2018-11)  | 2307 (+425, -391)  |
| 10 months ago (2018-09) | 2273 (+515, -466)  |
| 11 months ago (2018-07) | 2224 (+641, -541)  |
| 12 months ago (2018-05) | 2124 (+690, -624)  |
| 13 months ago (2018-03) | 2058 (+605, -444)  |
| 14 months ago (2018-01) | 1897 (+773, -679)  |
| 15 months ago (2017-11) | 1803 (+815, -979)  |
| 16 months ago (2017-09) | 1967 (+671, -431)  |
| 17 months ago (2017-07) | 1727 (+664, -518)  |
| 18 months ago (2017-05) | 1581 (+854, -548)  |
| 19 months ago (2017-03) | 1275 (+987, -796)  |
| 20 months ago (2017-01) | 1084 (+671, -505)  |
+-------------------------+--------------------+

рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдореИрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд┐рдирд╛ рдЦреБрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪрд░реНрдЪрд╛/рд╕рд╣рдорддрд┐ рд╣реЛрдиреЗ рддрдХ рдореБрджреНрджреЛрдВ рдХреЛ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд░рдЦрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рдПрдХ рдХрджрдо рд╣реИред

@agalazis рдпрд╣ рдореБрджреНрджрд╛ 4 1/2 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ 3 рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@agalazis рдпрд╣ рдореБрджреНрджрд╛ 4 1/2 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ 3 рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХрд╛ рд╕рджрд╕реНрдп рд╕рдордЭрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕рд┐рд░реНрдл 5 рджрд┐рди рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдЦреБрд▓рд╛ рд╣реИ

@ etay2000 рдХреБрдЫ рдирд┐рд░реНрдгрдп рдХреБрдЫ рд╕рдордп рдХрдард┐рди рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдорд╛рд░реЗрдВ? рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдерд╛ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдирд╣реАрдВ рд╣реБрдЖред

@рдмреАрдорди

рдПрдХ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХрд╛ рд╕рджрд╕реНрдп рд╕рдордЭрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕рд┐рд░реНрдл 5 рджрд┐рди рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдЦреБрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВред

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдердореНрд╕ рдбрд╛рдЙрди рдЗрдореЛрдЬреАрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдерд╛? 4+ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡реЗ рдирд┐рд░реНрдгрдп рдореЗрдВ рдЬрд▓реНрджрдмрд╛рдЬреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@рдЕрдЧрд▓рд╛рдЬрд╝реАрд╕
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдЫ рдирд┐рд░реНрдгрдп рдХрдард┐рди рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдХрдареЛрд░ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдЯрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдордп рд╕реАрдорд╛ рдХреНрдпрд╛ рдорд╛рдиреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП? рд╕рднреА 2855 рдЦреБрд▓реЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рдпреЗ рдХрдбрд╝реЗ рдлреИрд╕рд▓реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдлрд┐рд░ рднреА рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЖрд╕рдкрд╛рд╕ рднреА рд╣реИрдВред

@ etay2000 рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ рдЬреЛ рд▓реЛрдЧ рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рд╡реЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛрдЧреБрдиреЗ рдореБрджреНрджреЗ рдЦреБрд▓реЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдиреНрдп рдкреНрд░рд╕реНрддрд╛рд╡ рдЬреЛ рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕рдореЗрдВ рднреА рдХрд╛рдлреА рд╕рдордп рд▓рдЧрд╛ред рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдордиреЗ рдЖрдП рдЬреЛ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлреИрдВрд╕реА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ

@agalazis рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ (рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ) Google рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред

@beeman рдпрд╣рд╛рдВ рдердореНрд╕ рдбрд╛рдЙрди рдЗрдореЛрдЬреА рдбрд╛рд▓реЗрдВ: -------->

@ etay2000 рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрд╕рд╛ рдкреНрд░рддреНрдпреЗрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрдгрдп рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рдЪреАрдЬреЛрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬреЛ рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдПрдХ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдкреЗрд╢ рдХрд░рдирд╛, рдЬреЛ рдЙрд╕рдХреЗ рдмрд╛рдж рдереЛрдбрд╝реЗ рд╕рдордп рдореЗрдВ рдХреБрдЫ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд▓рд╛рдПрдЧрд╛, рд╡рд╣ рд╕рд┐рд░реНрдл рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИред рдЖрдк рд▓рдЧрднрдЧ рдкреНрд░рддреНрдпреЗрдХ рдкреАрдЖрд░ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рд╕рдкреНрддрд╛рд╣, рдорд╣реАрдиреЗ рдпрд╛ рд╕рд╛рд▓ рднреАред

@agalazis рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ (рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ) Google рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдЬрд╛рдУ рдФрд░ рдбрд╛рд░реНрдЯ рднреА рджреЗрдЦреЛред Google рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдзреЗ рджрд╢рдХ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ: рдбреА рдЖрдо рддреМрд░ рдкрд░ рднрд╛рд╖рд╛рдУрдВ/рдврд╛рдВрдЪреЗ/рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдмрд╣реБрдд рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реИ ред рдЖрдк рдирдИ рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдХреНрд░рд╛рдВрддрд┐ рд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ Google рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдирд╣реАрдВ рдЕрдкрдирд╛ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбрд╛рд░реНрдЯ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╢реВрдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рд╣рд┐рдЯ рдХреЛрдЯрд▓рд┐рди, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реНрдХрд╛рд▓рд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдореИрдВ Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЪреАрдЬреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓реЛрдХрд╛рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИред

(рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред)

@beeman рдпрд╣рд╛рдВ рдердореНрд╕ рдбрд╛рдЙрди рдЗрдореЛрдЬреА рдбрд╛рд▓реЗрдВ: -------->

@ etay2000 рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреИрд╕реЗ рдорджрдж рдХрд░рддреА рд╣реИ, рдЕрдЧрд░ рдпрд╣рд╛рдВ рдЖрдЪрд░рдг рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЕрдВрдЧреВрдард╛ рд▓рдЧрд╛рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рддреЛ рд╡реНрдпрдВрдЧреНрдп рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рдХреЛрдгреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдФрд░ рдврд╛рдВрдЪрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЦреБрд╢ рдХрд░рддреЗ рд╣реИрдВред

@brunojcm рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░реНрдЯреА рдЕрдм рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдкреБрд▓рд┐рд╕ рдпрд╣рд╛рдВ рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдЙрд╕рдиреЗ рдореЗрд░реА рдЕрдиреНрдп рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдХрдЯрд╛рдХреНрд╖ рдЖрдЪрд░рдг рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдерд╛ред

рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рдХреЛрдгреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдФрд░ рдврд╛рдВрдЪрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЦреБрд╢ рдХрд░рддреЗ рд╣реИрдВред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдХреА рдЖрдЪрд╛рд░ рд╕рдВрд╣рд┐рддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧрд╛ред

рдореЗрд░рд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛, рд╣рд░ рдХреЛрдИ рдЕрдкрдиреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдЧрд▓реЗ 4-5 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдХрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдирд┐рдХрд▓реАрдВред

@tonivj5 @zakhenry рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд╡рд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@mgchev рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░реНрдЪрд╛ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЛрд░ + рдЧреИрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдмрдирд╛рдо рджреВрд╕рд░реА рддрд░рдлред
  • рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдХрд┐ рдлреАрдЪрд░ рдПрдкреАрдЖрдИ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореМрдХрд╛ рд╣реИред

    • рднрд▓реЗ рд╣реА рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рд╣реА рд╣реЛ, рдЬрдм рддрдХ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп func рдЕрднреА рднреА рд╕реБрд▓рдн рд╣реЛред

    • рдЬреИрд╕рд╛ рдХрд┐ @zakhenry рдиреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдпрд╛ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдЗрди рдПрдкрд┐рд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

    • рдлрд┐рд░ рдЖрдк рдЗрди рд░реИрдкрд░ рдЯреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдмрддрд╛ рд╕рдХреЗрдВ (рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рдорд╛рди рд╣реА)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рд╕реАрдзреЗ Vue 3.0 рдХреЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдореЙрдбреНрдпреВрд▓ (рд░реЗрдлрд░реА рдпрд╛ рд░рд┐рдПрдХреНрдЯрд┐рд╡) рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@AnonymousArthur рдпрджрд┐ рдЖрдк рдкреИрдХреЗрдЬ @vue/reactivity рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдХрд┐ RxJs рд╣реИ)ред

@ рдЧреБрдВрдб рд╣рд╛рдБ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдБред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдореЗрдВ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (4.5 рд╡рд░реНрд╖) рдФрд░ рдЕрднреА рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдПрдХ рд╡рд┐рдЪрд╛рд░ (рд╢рд╛рдпрдж рдирд╣реАрдВ) рдкреЙрдк рдЕрдк рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛/рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛ ngOnChange рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк (рдпрд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдкрдврд╝рд╛) рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдореВрд▓реНрдп рдХреЛ рдПрдХ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ @robwormald рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рднреЛрдВ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрд┐рддрдирд╛ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореБрдЭреЗ рдХреБрдЫ рдХрдорд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╕рдорд╛рдзрд╛рди рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг:

рдХреЛрдгреАрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ @OInput() рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ EventReceiver<T> рдХрд┐ рдлреИрд▓реА Observable<T> рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд╣рддреЗ рд╣реИрдВ рдПрдХ .value рдЧреЗрдЯрд░ (рдЬреИрд╕реЗ BehaviorSubject<T> )ред

рдореВрд▓ рдШрдЯрдХ рдкрдХреНрд╖ рдкрд░ , рдЬреИрд╕рд╛ рдХрд┐ @robwormald рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╣рд╛рдВ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдорд╛рди рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА | async ред рдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЧреИрд░-рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдкреНрд░рдХрд╛рд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдареАрдХ рд╣реИ (рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣), рднреАред

рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ , рдпрд╣рд╛рдБ рдореИрдВ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдБ рд╡рд╣ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ (рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рдЪрд▓рди):

@Component({ selector: "child" })
class Child {
  // Notice, this parallels the patterns of `@Output()`.
  @OInput() foo = new EventReceiver<MyType>();

  constructor() {
    // The reactive way to listen to input changes in the class.
    this.foo.subscribe((v) => {
      console.log('foo changed', v);
    });
    // Or you can bind to `foo | async` in the template.
  }

  // But this would also support less reactive patterns in parallel,
  // both for ease of migration and for cases where developers don't
  // want to migrate fully. 
  ngOnChanges(changes: SimpleChanges) {
    if (changes['foo']) {
      console.log('foo changed', changes['foo'].currentValue); // Unchanged
      console.log('foo changed', this.foo.value);  // Previously this would have been just `this.foo`
    }
  }
}

рдЕрдм рдпрд╣рд╛рдБ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рдн рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдереЛрдбрд╝реЗ рдХрдо рдмрд┐рдХреЗ рдереЗ:

  • рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛ, рддреЛ рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рджреЛрдиреЛрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдбрд┐рдЬрд╛рдЗрди рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
  • рдореВрд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ, рдПрдВрдЧреБрд▓рд░ рдХреЗ рдореМрдЬреВрджрд╛ рдЗрдирдкреБрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдШрдЯрдХ рдЗрд╕рдореЗрдВ рдордЬрдмреВрд░ рди рд╣реЛ рдпрд╛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рди рдХрд░рдирд╛ рдкрдбрд╝реЗред
  • рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдмрдЪреНрдЪрд╛ Input рдпрд╛ OInput , рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдХреНрд░реЙрд╕-рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдЧ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  • рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдПрдХ рдПрдХрд▓ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдгреАрдп рдЗрди рд╕рднреА рдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдореМрдЬреВрджрд╛ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝реЗ рд░рдЦрддрд╛ рд╣реИред
  • рдЪреВрдВрдХрд┐ рдХреЛрдгреАрдп рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА EventReceiver s рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ takeUntil(ngOnDestroyEvent) рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрд╛рдЗрдк рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЙрдирдХреЗ рдШрдЯрдХ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рд╡реЗрдзрд╢рд╛рд▓рд╛рдПрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рдПрдВрдЧреА . (рдпрд╛рдп рдХрдо рдореЗрдореЛрд░реА рд▓реАрдХ!)
  • рдЗрд╕ рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ, рдпрд╣ рдЖрдЬ рдХреЗ @Output() рдХреЗ рдкреИрдЯрд░реНрди рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЕрдЪреНрдЫреА рд╕рдорд╛рдирддрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИред

    • рд╕рд╛рдЗрдб рдиреЛрдЯ: рдлреЙрд▓реЛ-рдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @InputOutput() рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рджреЛ-рддрд░рдлрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП ReplaySubject<T>(1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрдкрдиреА рдЪреБрдиреМрддрд┐рдпрд╛рдВ рдФрд░ рддрд░реНрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

  • рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдпрд╣ @Output() рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред
  • рдХреЛрдгреАрдп рдореВрд▓ рд░реВрдк рд╕реЗ switch() рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ Observable рдорд╛рддрд╛-рдкрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрдирдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдордЬреЛрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреИрдЯрд░реНрди рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╣реА рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ( switch() рдПрдб) рдЪрд╛рдЗрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП OInput рдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдЗрдб рдиреЛрдЯ: рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╡рд╣ рдирд╛рдо рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ" рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдЖрдЙрдЯрдкреБрдЯ" рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдпрд╣ рджрд░реНрдкрдг рд╣реИред

рдкреНрд░рд┐рдп рдХреЛрдгреАрдп рдЯреАрдоред рдХреГрдкрдпрд╛ рд╣рдореЗрдВ 2020 рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджреЗрдВ :-)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ @jcomputer рд╕рдорд╛рдзрд╛рди рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдЕрд▓рдЧ рдбреЗрдХреЛрд░реЗрдЯрд░ рдирд╛рдо рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ @ViewChild рдореЗрдВ { read } рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рдЙрджрд╛рд╣рд░рдг:

@Input({ observable: true }) 
@Input({ asObservable: true }) 
@Input({ asSubject: true })

2020 рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред :D рдмреЗрд╢рдХ рдпрд╣ (рдФрд░ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдЕрдиреНрдп рдореБрджреНрджреЗ) рдПрдХ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИред :)

https://twitter.com/ThomasBurleson/status/1283902827467886592
image

@fxck рдореЗрд░реА рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╛рдп рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЕрдЧрд░ 2020 рд╡рд░реНрд╖ рд╣реИ, рддреЛ рдХреЛрдгреАрдп рдЯреАрдо рдиреЗ рдлреЙрд░реНрдо, рд░рд╛рдЙрдЯрд░ рдЖрджрд┐ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрдЧ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ 0 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛: рд╢реНрд░рдЧ:ред

image

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рд╢рд╛рдпрдж рдпрд╣ рд╣рд╛рд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреЛрдгреАрдп рдЯреАрдо рдореЗрдВ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрди рдорд╣рд╛рди рд▓реЛрдЧреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрдм рддрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреЛрдгреАрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рджрд┐рд▓:ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реИред

рдСрдл рдЯреЙрдкрд┐рдХ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдЙрдбрд╝ рдЬрд╛рдирд╛

@ maxime1992 рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдареАрдХ рд░рд╣реЗрдЧрд╛ред

рдореЗрд░реА рдпрд╣рд╛рдВ рдПрдХ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╛рдп рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЕрдЧрд░ 2020 рд╕рд╛рд▓ рд╣реИ рддреЛ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдиреЗ рдлреЙрд░реНрдо, рд░рд╛рдЙрдЯрд░ рдЖрджрд┐ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрдЧ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ 0 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛

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

рдореЗрд░реЗ рдкреАрдУрд╡реА рд╕реЗ, рд╡реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреАрдУрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред, ..: - /

@ montella1507 рдирд╣реАрдВ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдмреЙрдЯ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдмрдВрдж рдореБрджреНрджреЛрдВ рдХреЛ рд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдЪ рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирдП рдореБрджреНрджреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдкрд░ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреИрд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХреЛ рджреЛрд╖ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдорд┐рд▓рдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдореИрдВ рдЖрдкрдХрд╛ рджрд░реНрдж рд╕рдордЭрддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдВрдЧреБрд▓рд░ рдореЗрдВ рднреА рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рднреА рдмрджрд▓реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдорддрд▓рдм рдПрдХ рдРрд╕рд╛ рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЪрдордХрджрд╛рд░ рдирдП рдЦрд┐рд▓реМрдиреЗ рд╣реЛрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛрдВред рдФрд░ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд╣реИред рдРрд╕реЗ рдврд╛рдВрдЪреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЕрдзрд┐рдХ рдЙрджреНрдпрдо-рд╕реНрддрд░ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдЦрддреЗ рд╣реЛрдВ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реЛрдВред рдФрд░ рдХреЛрдгреАрдп рдпрд╣ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗред

рдореБрдЭреЗ Vue рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рдирд┐рдЬреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬрд▓реНрджреА рдкреБрд░рд╛рдиреА рд▓рдЧрдиреЗ рд▓рдЧрддреА рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдПрдХ рдирдИ рдШрдЯрдХ рд╢реИрд▓реА рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЬрдм рдореИрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЪреАрдЬреЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рдЯреВрдЯрддреА рд╣реИрдВред рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рднреА рдЕрдиреБрдХреВрд▓рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдХрдард┐рди рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЛрдгреАрдп рдкрд░рд┐рдкрдХреНрд╡ рдФрд░ рд╕реНрдерд┐рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрджреНрдпрддрди рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрдо рдХрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред рдЖрдкрдХрд╛ рдЬреНрдЮрд╛рди рднреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@manfreed рд▓реЛрдЧ рдЪрдордХрджрд╛рд░ рдирдП рдЦрд┐рд▓реМрдиреЗ рдХреА рдорд╛рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдореЗрдВ рдХрднреА-рдХрднреА рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрддреЗ рд╣реИрдВред рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рд╕реЗ рдирдлрд░рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░рд╛рд╢ рд╣реИрдВред рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░рд╛рд╢ рд╣реИрдВред рдФрд░ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЗрддрдиреЗ рдирд┐рд░рд╛рд╢ рдереЗ рдХрд┐ рд╣рдордиреЗ рд╣рд╛рд░ рдорд╛рди рд▓реА рдФрд░ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред рдореИрдВ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛, рдереЛрдбрд╝реА рд╕реА рджрд┐рд╢рд╛ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рдврд╛рдВрдЪрд╛ рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдЧ рдХреБрдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреА рдХрдореА, рдирд┐рд░реАрдХреНрд╖рдг, рд╡реЗ рд╕рднреА рдирд┐рд╖реНрдкрдХреНрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИрдВред

@insidewhy рдзреИрд░реНрдп рд░рдЦреЗрдВ, рд╕рдбрд╝рдХ рдкрд░ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдЪреЛрдЯрд┐рдпрд╛рдБ рдФрд░ рдШрд╛рдЯрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рднреА рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХреБрдЫ рдкреНрд░рдореБрдЦ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдФрд░ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреА рд╣реИрдВ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреА рд╣реИрдВред

рд░реЛрдбрдореИрдк рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрдкрд░реЛрдХреНрдд рдореБрджреНрджреЗ рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдерд╛, рдЬреЛ рдореБрдЭреЗ рджреБрдЦрдж рд▓рдЧрд╛, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рд╣реЛрдЧрд╛, рдЙрд▓реНрд▓реЗрдЦ, рдкрд╛рд╡рддреА ... рдпрд╣ рдЪрд░реНрдЪрд╛ рдХреЛрдгреАрдп рдХрд▓рд╣ рдкрд░ рд╣реБрдИ -

image

рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджреЗрд╣ рдХрд╛ рд▓рд╛рдн рджрд┐рдпрд╛ рдФрд░ рдЙрд╕ рдордзреНрдпрдо рд░реЛрдбрдореИрдк рд▓реЗрдЦ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреВрдЫрд╛, рдорд┐рдВрдХреЛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:

image

рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдпрд╣рд╛рдВ рдЬреЛ рдХрд╣рд╛ рдерд╛, рдЙрд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╣реБрдд рджреЛрд╣рд░рд╛рдпрд╛, рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрд░рдПрдХреНрд╕рдЬреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╣реА рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рдВред

рдореИрдВ рдЕрдкрдиреА рдмрд╛рдд рдордирд╡рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рджреЛ.. рдореИрдВ рдХреЛрдгреАрдп рдХреЛ

  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЬреАрд╡рдирдЪрдХреНрд░
  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ
  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрд╡реЗрдВрдЯ

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИ

@fxck : +1: рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред

  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЬреАрд╡рдирдЪрдХреНрд░
  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ
  • рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрд╡реЗрдВрдЯ

@insidewhy рдзреИрд░реНрдп рд░рдЦреЗрдВ

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

@ рдЕрдВрджрд░ рдХреНрдпреЛрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЖрдо рддреМрд░ рдкрд░ рдерд╛ред

@fxck Google рдХреЗ рдкрд╛рд╕ (рдореЗрд░реА рдЕрдВрддрд┐рдо рдЧрдгрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░) 4000 рдРрдкреНрд╕ рдХреЛрдгреАрдп рдФрд░ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╛рди рд╣реИрдВ, рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╕рд╣рдХрд░реНрдореА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ (рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ) рдмрд╣реБрдд рд╕рд╣рдЬ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рдПрдВрдЧреБрд▓рд░ рдХреЗ рдмрдбрд╝реЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреАрдо рдХреЗ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд╣рдХрд░реНрдореА рд╕рдореАрдХреНрд╖рд╛ рдкреВрд░реА рдЬрд╛рдВрдЪ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдЕрдм рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣рд╛рдпрдХ RxJS рд╢реЙрд░реНрдЯрдХрдЯ рдХреЛ рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдмрдирд╛рдо рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╕рд╣реА рд╣реИред рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдгреАрдп рдЯреАрдо рдХрд╛ рдЬрд╡рд╛рдм "рдпрд╣ рдПрдХ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ" рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ), рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╣рдо рдкрдХреНрд╖ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ" рдХреЗ рдХрд░реАрдм рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдВрдЧреБрд▓рд░ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЙрдиреНрдирдд рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдореБрдЦрд░ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдбреАрдЖрдИ, рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ, рдФрд░ рдПрдВрдЧреБрд▓рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЯрдЯреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рджрд┐рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 1 рд╡рд░реНрд╖ рд╣реИ, рдФрд░ рдЕрдм рдЖрдк рддреИрдпрд╛рд░ рд╣реИрдВ RxJS рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд░рд┐рд╖реНрда рд╕реНрддрд░ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╣рдХрд░реНрдореА рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рджреЗрдирд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╡рд┐рдореБрдЦ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╕реНрддреБрддрдГ рдЖрдЦрд┐рд░реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдгреАрдп рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдХреЛрдгреАрдп рдХрд╛ рд▓рдХреНрд╖реНрдп (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ) "рдПрдХреНрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рдЙрдкрдиреНрдпрд╛рд╕ рдХреНрдпреЛрдВ рд╣реИ" рд╕реЗ рдмрд╛рддрдЪреАрдд рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЯреНрдпреВрди рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рдХрд░реНрдореА рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ "рдЙрдиреНрдирдд" рдХреЛрдгреАрдп рдФрд░ "рд╢реБрд░реБрдЖрддреА" рдХреЛрдгреАрдп рдХреЗ рдмреАрдЪ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реНрддрд░реАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рд╡рд╣реА рддрд░реНрдХ рд╣реИ рдЬреЛ рд╣рдордиреЗ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рд╣реИ, рдХреЛрдгреАрдп рдХреЛ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рдкреИрдЯрд░реНрдиреЛрдВ рд╕реЗ рдХреНрдпреЛрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рд╕рд╣реА рд╣реИ?

рдореИрдВ рд╕рд┐рд░реНрдл рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВред

image

рд╡реИрд╕реЗ, рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЙрдиреНрдирдд рдирд╣реАрдВ рд╣реИ (рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЬреАрд╡рдирдЪрдХреНрд░, рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЗрдирдкреБрдЯ, рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрд╡реЗрдВрдЯ)ред

рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рд╡рд╣реА рддрд░реНрдХ рд╣реИ рдЬреЛ рд╣рдордиреЗ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рд╣реИ, рдХреЛрдгреАрдп рдХреЛ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рдкреИрдЯрд░реНрдиреЛрдВ рд╕реЗ рдХреНрдпреЛрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рд╕рд╣реА рд╣реИ?

рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдФрд░ рдЗрд╕рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЛрдгреАрдп рдХреЛрд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреЛрдгреАрдп рдЙрди рддреАрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд▓рд┐рдВрдХ)

рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╣реЗ рджрд┐рд▓ рд╕реЗ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдлреЙрд░реНрдо, рд░рд╛рдЙрдЯрд░, рдлреНрд▓реЗрдХреНрд╕-рд▓реЗрдЖрдЙрдЯ, рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдЖрджрд┐ рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдПрдВрдЧреБрд▓рд░ рдЯреАрдо рдХреЛ рдХреЛрд░, рдХреНрд▓реА рдФрд░ рдШрдЯрдХреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рджреЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рдШрдЯрдХреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд░реНрд╖реЛрдВ рддрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ (рдЕрдХреНрд╕рд░ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рдЖрдЗрд╡реА рдХреЛ рдкрд╣рд▓реЗ рдЬрд░реВрд░рдд рд╣реИ) рдФрд░ рдЕрдм рдЕрдкрдиреА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ / рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдгреАрдп рдЯреАрдо рдХрд╛ рдЬрд╡рд╛рдм "рдпрд╣ рдПрдХ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ" рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ), рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╣рдо рдкрдХреНрд╖ рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ" рдХреЗ рдХрд░реАрдм рд▓рдЧрддрд╛ рд╣реИред

рд╣рд╛рдБ рдФрд░ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд╣реИред

@fxck рдореБрдЭреЗ рдмрд╣реБрдд рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реИрдВред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдордВрдЪреЛрдВ рдкрд░ рдпрд╛ рдЕрдкрдиреЗ рд╕рд╛рдереА рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджреНрдзрд░рдг рдореИрдВ рдЙрджреНрдзреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ "рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдФрд░ рдХреИрд╕реЗ рд╕реАрдЦреВрдВ?" рдпрд╛ "рдореБрдЭреЗ рдпрд╣ рднрд╛рд░реА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВред" рдпрд╛ "рдореБрдЭреЗ рдЗрд╕ рдкреАрдЖрд░ рдореЗрдВ рдЗрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ"ред рдкреНрд░рддреНрдпреЗрдХ 1 рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл RxJS рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд▓рд┐рдП, 15 рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл рдПрдВрдЧреБрд▓рд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВ рдЬрд┐рдирдХреА рднреМрдВрд╣реЗрдВ рд╣реИрдВред

рд╣рд╛рдБ рдФрд░ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд╣реИред

рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИ, рд╣рдореЗрдВ рдЗрди рдкреИрдЯрд░реНрдиреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП @angular/core рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рднреАрддрд░ рдХрдИ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЬ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдорд┐рддрд╡реНрдпрдпрд┐рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ @angular/core рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП npm uninstall рдФрд░ рд╕рднреА рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реИ?

рдкреНрд░рдореБрдЦ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдирд┐рд░реНрдгрдп, рдЬреЛ рд╕рднреА рдХреЛрдгреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╡реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рдВрдЦреНрдп рдШрдВрдЯреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рднреА рднрдпрд╛рд╡рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рднреА рд╡рд╣рд╛рдВ рд░рд╣реЗ рд╣реИрдВ:

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

рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╣реИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреВрд░реА рдмрд╛рдд рд╣реИ .. рдкрдврд╝реЗрдВ рдХрд┐ @insidewhy рдиреЗ https://github.com/angular/angular/issues/5689#issuecomment -630661006 рдФрд░ рдЬреЛ рдореИрдВрдиреЗ рдиреАрдЪреЗ рдХрд╣рд╛ рдерд╛, рдЙрд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВред

// рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд▓рд┐рдВрдХ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╣реИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХреМрди рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ/рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдХ рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдкреИрдЯрд░реНрди рдореЗрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЧреЗ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдкреВрдЫрдирд╛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реА рдбреНрд░рдо рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкреАрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝реЗрдВ @insidewhy рдЙрд╕рдиреЗ рдЗрд╕реЗ рдХреЛрд░ рдХреЗ рдЕрдВрджрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

image

@fxck рдореИрдВ рдЗрд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдпрд╣ рдореБрджреНрджрд╛ 5 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреИрд╕реЗ рдЦреБрд▓рд╛ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХреЛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдХреНрдпрд╛ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдореБрджрд╛рдп рдХреЛ рд╕реНрд╡рдпрдВ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗ?

рдпреЛ @insidewhy , рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╣реИрдХ рд╣реИрдХ рдЖрдкрдХреЗ рдХрд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдЕрдм TS 4.0 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рд╕рдВрдкрддреНрддрд┐ 'serviceStackId$' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ts(2729)

image

рдпреЛ @insidewhy , рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╣реИрдХ рд╣реИрдХ рдЖрдкрдХреЗ рдХрд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдЕрдм TS 4.0 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдирд╣реАрдВ, рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдерд╛ред рдпрд╣ рдХреБрдЫ рдФрд░ рд╣реИред рд▓рд╛рдирдд рд╣реИред рдареАрдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЕрдиреБрд░рдХреНрд╖рдХ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

@fxck рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдЙрд╕ рдкрд╛рдЗрдк рдСрдкрд░реЗрдЯрд░ рдХреЛ ngOnInit рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░ рдЖрдзрд╛рд░рд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдЪрд▓рдиреЗ рддрдХ рдЗрдВрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрдз рд╕рдорд╕реНрдпрд╛ рд╣реИред

@insidewhy рдореИрдВрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ TS4 рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рдФрд░ рдЬрд╛рдБрдЪ рдЗрд╕ ,

function ObservableInput() {
  return (target: any, propertyKey: any) => {
    Object.defineProperty(target, propertyKey, {
      set(value: any) {
        console.log(target, propertyKey, value);
      },
      get() {
        return 'ObservableInput modified value';
      },
    })
  }
}

class Foo {
    @ObservableInput()
    bar = 'original bar value';

    baz = this.bar;

    constructor() {
        console.log('loggging this.baz', this.baz);
    }
}

new Foo();

рдпрд╣ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ

рд▓реЙрдЧрд┐рдВрдЧ this.baz ObservableInput рд╕рдВрд╢реЛрдзрд┐рдд рдорд╛рди

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рдЯреАрдПрд╕ 4 рдореЗрдВ рд╕рдВрдХрд▓рдХ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрд╕ рд╕рдЬрд╛рд╡рдЯреА рдХреЗ рдЕрдВрджрд░ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде get ..

рдореИрдВ рдЗрдирдкреБрдЯ рдкреНрд░реЛрдк рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрдирдкреБрдЯ рдкреНрд░реЛрдк рдХрд╛ рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХреЛрдбрд╕реИрдВрдбрдмреЙрдХреНрд╕ рдбреЗрдореЛ рджреЗрдЦреЗрдВред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

// subjectize.ts
export function Subjectize(keyToWatch: string): PropertyDecorator {
  return (proto: any, propKey: string) => {
    const internalKey = Symbol(keyToWatch);
    Object.defineProperties(proto, {
      [keyToWatch]: {
        get() {
          return this[internalKey];
        },
        set(value) {
          this[internalKey] = value;
          this[propKey].next(value);
        }
      }
    });
  };
}
// counter.component.ts
import { Component, Input } from "@angular/core";
import { ReplaySubject } from "rxjs";
import { Subjectize } from "./subjectize";

@Component({
  selector: "app-counter",
  templateUrl: "./counter.component.html",
  styleUrls: []
})
export class CounterComponent {
  @Input()
  count: number;

  @Subjectize("count")
  count$ = new ReplaySubject(1);
}

рдЬреИрд╕рд╛ рдХрд┐ @wmaurer рдиреЗ рдмрддрд╛рдпрд╛, рдЪреАрдЬреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @Subjectize рдХреЛ "рдЪреАрдиреА" рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдХреЛрдгреАрдп рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкрдврд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдПрдХ рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ , рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо getter/setter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред

@hankchiutw рд╡рд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ @BindObservable рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ: https://github.com/PSanetra/bind-observable#usage

рдзрдиреНрдпрд╡рд╛рдж @hankchiutw

рдЪреВрдВрдХрд┐ рдЖрдк 1 рдХреЗ рд╕рд╛рде ReplaySubject рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп BehaviorSubject рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВрдиреЗ рд╕реАрдзреЗ рд╡рд┐рд╖рдп рдореЗрдВ рдореВрд▓реНрдп рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред

export function Subjectize<T>(keyToWatch: string): PropertyDecorator {
  return (target: Object, propKey: string) => {
    const internalKey = Symbol(keyToWatch);
    Object.defineProperties(target, {
      [keyToWatch]: {
        get(): T {
          return this[internalKey];
        },
        set(value: T) {
          this[internalKey] = value;

          if (this[propKey]) {
            this[propKey].next(value);
          } else {
            this[propKey] = new BehaviorSubject(value);
          }
        }
      }
    });
  };
}

@Component({
    changeDetection: ChangeDetectionStrategy.OnPush,
    selector: 'rol-bla',
    templateUrl: 'bla.html',
    styleUrls: [ 'bla.scss' ]
})
export class BlaComponent implements OnInit {
    @Input() world: World;
    @Subjectize<World>('world') world$: BehaviorSubject<World>;

    // ...
}

рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдореИрдВ "рд╡рд┐рд╖рдпрдЧрдд" рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдЯрд╛рдЗрдк рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪ рд╕рдХреВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП :( рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рд╕рдкрдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рдкреНрд░реЛрдк (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреБрдирд┐рдпрд╛ $) рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛рдФрд░ рдареАрдХ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ред

export class BlaComponent implements OnInit {
    @Input() @Subjectize() world: World;

    // ...
}

@mparpaillon рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдЗрд╕реЗ https://github.com/PSanetra/bind-observable рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ @BindObservable() рдбреЗрдХреЛрд░реЗрдЯрд░ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рд░рд┐рдкреНрд▓реЗрд╕рдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╖рдп рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдмрд╛рдзреНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рдХрд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗ)ред

рд╕реНрдЯреИрдХрдмреНрд▓рд┐рдЯреНрдЬ рдЙрджрд╛рд╣рд░рдг

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponentComponent {
  @Input()
  @BindObservable()
  counter: number;
  counter$: ReplaySubject<number>;
}

рдзрдиреНрдпрд╡рд╛рдж @PSanetra рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рдВрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ)

@mparpaillon рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдбреЗрдореЛ рдореЗрдВ рдЖрдкрдХреЗ рд╕рдкрдиреЗ (рд╣рд╛) рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред

рдЙрдкрдпреЛрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ

export class CounterComponent {
  @Input()
  @Subjectize()
  count: number;

  @Input()
  @Subjectize("myCount$")
  anotherCount: number;
}

рдЬрд╣рд╛рдВ рдЖрдк рд╡рд┐рд╖рдпрдЧрдд рдкреНрд░реЛрдк рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд┐рдЧреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рд╕рджрд╕реНрдп рдЕрдВрдбрд░рд╣реБрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдзрдиреНрдпрд╡рд╛рдж @hankchiutw ! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдЭреЗ рдЧрд┐рдирддреА $ рдпрд╛ myCount $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

Capture dтАЩe╠Бcran 2020-11-12 a╠А 10 11 50

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ... рдзрдиреНрдпрд╡рд╛рдж рдлрд┐рд░ рд╕реЗ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдЭреЗ рдЧрд┐рдирддреА $ рдпрд╛ myCount $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ "рдЧрд┐рдирддреА" рдФрд░ "рдЕрдиреНрдп рдЧрдгрдирд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк "рдорд╛рдИрдХрд╛рдЙрдВрдЯ $" рдФрд░ "рдЧрд┐рдирддреА $" рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рднреА рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ... рдпрд╣реА рдмрд╛рдд рд╣реИред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣рд╛ рдерд╛ред @hankchiutw рдиреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдФрд░ рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

@mparpaillon рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: https://github.com/Futhark/ngx-observable-input

@ рдлрд╝реБрдерд╛рд░реНрдХ рдУрд╣ рдпрд╣ рдЧрд░реНрдо рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

deepakgd picture deepakgd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nosachamos picture nosachamos  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deeleman picture deeleman  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alippai picture alippai  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeffbcross picture jeffbcross  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ