Jak mogę nasłuchiwać zmian na ngModel? Problem polega na tym, że jeśli połączyłem (zmieniłem) lub (kliknęło) zdarzenie z elementem, w danej funkcji, gdy uzyskuję dostęp do modelu, jego wciąż nie zmieniono. Jeśli dodam setTimeout 500ms niż mogę zmienić model. Każdy pomysł, w jaki sposób można uzyskać prawdziwy zmieniony obiekt bez setTimeout, który jest bardzo zły sposób? kod w html:Angular 2 nasłuchuj na zmianie modelu
<input type="checkbox" (click)="autoJoinToggle()" [(ngModel)]='active.bookmark.autoJoin'> Autojoin
kod w komponencie:
console.log(this.active.bookmark.autoJoin) // returns the current value (before the change)
setTimeout(() => {console.log(this.active.bookmark.autoJoin);}, 500); //returns the value after the change
Nie mogę tego zrobić z Kątowymi Kontroli bo muszę model binded i „aktywnego” obiekt nie istnieje w pierwszej kolejności , i jeśli chcę zaktualizować wartość kontrolki po zdefiniowaniu "aktywnego", muszę słuchać zmian na "aktywnym" obiekcie (który zmienia nadgodziny). Ten sam problem dotyczy zmiennej lokalnej i @ViewChild -> Nadal muszę wiedzieć, kiedy "aktywny" się zmienia, więc aktualizuję również zmienną lokalną.
Rozwiązanie to z konieczności lokalną zmienną + ngModel działa, ale w funkcji doSomething jawnie ustawić 'this.active.autoJoin = cb.checked' co chyba jest w porządku za rozwiązanie tymczasowe, aż problem zostanie ustalony –
można dodać ' autoJoinToggle (cb) { this.active.bookmark.autoJoin = cb; // Zrób coś .. } ' } To będzie kompletne rozwiązanie dla kogoś innego –