Wpis z mikrobloga

Jaka jest różnica między @Input a Subject<>() w #angular ? Chciałbym przesłać informacje (a dokładniej indeks zaznaczonego li) z parent component do child component. Mogę to zrobić przez service. Tam umieścić subject i zasubskrybować go w child component. Zastanawiam się tylko czy jest jakaś zasada w której stosuje się stricte @Input czy @Output a kiedy takie rzeczy jednak robi się przez service. No bo jeśli użyje @input to dane nie będą się przesyłać co event ?
#programowanie #typescript #webdev
  • 5
  • Odpowiedz
@pablojakub: przez service robisz gdy potrzebujesz przesłać jakieś dane między komponentami które nie mają relacji. Jak jest relacja parent-child używaj Inputów i Outputów. Dodatkowo możesz poczytać czym są smart i dump components. No i przyda Ci się zapoznać czym są pure componenty.
Pozdro Angularowy wariacie :D
  • Odpowiedz
@pablojakub: Jeżeli przekażesz jakieś property, następnie na wyrenderowanym widoku w parencie zmienisz wartość tego property, a w childzie będziesz tą wartość wyświetlał to w takim przypadku wartość będzie się zmieniać bo przekazując @Input stosujesz one way binding. Natomiast jeśli po zmianie twojej property ma się odpalić jakaś metoda to możesz w childzie zrobić z tej @Inputowanej propertki setter w sposób następujący:

@Input() set propertyXYZ(value: XYZ) {
  • Odpowiedz
@Cimcirimcipiririri: OK super to two-way binding:) Przyda się na przyszłość. Na chwilę obecną zaimplementowałem po prostu ngOnChanges w child-component i przesyła mi za każdym razem indeks zaznaczonego - w parent component czyli o to o co mi chodziło bez RxJS :)
Dzięki!
  • Odpowiedz