Piszę komponent Angular, który ma właściwość Mode(): string
.
Chciałbym móc ustawić tę właściwość programowo nie w odpowiedzi na żadne zdarzenie.
Problem polega na tym, że w przypadku braku zdarzenia przeglądarki powiązanie szablonu {{Mode}}
nie jest aktualizowane.
Czy istnieje sposób, aby ręcznie uruchomić to wykrywanie zmian?
ChangeDetectorRef.detectChanges()
. walidatory odpalały, zanim moja dyrektywa mogła zaktualizować wartość wejściową.Użyłem akceptowanego źródła odpowiedzi i chciałbym podać przykład, ponieważ dokumentacja Angular 2 jest bardzo trudna do odczytania, mam nadzieję, że jest to łatwiejsze:
Importuj
NgZone
:Dodaj go do konstruktora klasy
Uruchom kod za pomocą
zone.run
:źródło
zone.run
kod i czym dokładnie jestdonations
?Byłem w stanie zaktualizować go za pomocą markForCheck ()
Importuj ChangeDetectorRef
Wstrzyknąć i utworzyć go
Na koniec nastąpi wykrycie zmiany znaku
Oto przykład, w którym działa markForCheck (), a wykrywanieChanges () nie.
https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview
(Naciśnij STOP / RUN, aby uruchomić ponownie)
źródło
W Angular 2+ wypróbuj dekorator @Input
Pozwala na pewne ładne powiązanie właściwości między komponentami nadrzędnymi i podrzędnymi.
Najpierw utwórz zmienną globalną w obiekcie nadrzędnym, aby przechowywać obiekt / właściwość, która zostanie przekazana do dziecka.
Następnie utwórz zmienną globalną w obiekcie potomnym, aby przechowywać obiekt / właściwość przekazaną od rodzica.
Następnie w nadrzędnym pliku HTML, w którym używany jest szablon podrzędny, dodaj notację w nawiasach kwadratowych z nazwą zmiennej podrzędnej, a następnie ustaw ją na wartość równą nazwie zmiennej nadrzędnej. Przykład:
Na koniec, jeśli właściwość potomna jest zdefiniowana w komponencie potomnym, dodaj dekorator wejściowy:
Gdy zmienna nadrzędna zostanie zaktualizowana, powinna przekazać aktualizacje do komponentu potomnego, który zaktualizuje jego HTML.
Ponadto, aby uruchomić funkcję w komponencie potomnym, spójrz na ngOnChanges.
źródło
ChangeDetectorRef.detectChanges () - podobnie jak $ scope. $ Digest () - tzn. Sprawdź tylko ten komponent i jego dzieci
źródło