Wpis z mikrobloga

#programowanie #javascript #angular
Pytanie na szybko mam, jak wykrywać zmianę propsa w obiekcie? Chodzi mi o to, że w komponencie mam ngOnChanges i jeśli zmieni się, któreś property obiektu to chcę coś tam zrobić. Działa to tylko na przypisanie nowego obiektu, a chciałbym właśnie na dowolne property. Ktoś doradzi z czego mogę skorzystać?
  • 9
@Dominias: działa tylko na przypisanie ponieważ tak jest szybciej - "stary" Angular (AngularJS znaczy się) oferował nawet jakieś deep watchery i zgadnij jaka była tego wydajność ( ͡° ͜ʖ ͡°) a przy detekcji nowej referencji wystarczy proste porównanie "===" i już wiadomo czy obiekt się zmienił czy nie. Możesz użyć biblioteki a la Immutable.js, dzięki której po modyfikacji obiektu dostaniesz jego nową referencję, więc change detection się
@Dominias: change detection w Angularze działa tak, że "odpala się" przy zdarzeniach asynchronicznych, czyli wywołanie jakiegoś eventu, callbacka itp. i w tych przypadkach wszystkie interpolowane i bindowane dane są aktualizowane.

Zmiana Twojego propsa jak jest wprowadzana? Nasł#!$%@? z jakiegoś web service'u, czy np. wprowadzasz w inpucie na stronie?
@Arveit: teoretycznie tak się dzieje bo w rodzicu w zależności od tego parametru coś tam sobie wyświetla, ale chodzi mi o to żeby wejść do ngOnChanges - tak się nie dzieje, a chcę tam callować metodę do updateu danych w agGridzie. Mógłbym się bawić z outputami ale to pisanie zbędnego kodu imo, tym bardziej, że zmiana tego property ma wpływ na inne rzeczy w "rodzeństwie"
@Dominias: to może implementacja serwisu tutaj pomoże, jeśli to jest jakaś zaawansowana komunikacja pomiędzy komponentami? @Input()/@Output() to nie jest zbędny kod, to normalne bindowanie danych w ng :P tylko faktycznie ma sens przy relacji rodzic-dziecko, jak masz głębszy nesting to już się problemy robią