Wyjaśnij mi, dlaczego wciąż pojawia się ten błąd: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
Oczywiście dostaję to tylko w trybie deweloperskim, nie dzieje się to w mojej wersji produkcyjnej, ale jest to bardzo denerwujące i po prostu nie rozumiem korzyści płynących z błędu w moim środowisku programistycznym, który nie pojawia się w prod - -prawdopodobnie z powodu mojego braku zrozumienia.
Zwykle poprawka jest dość łatwa, po prostu zawijam błąd powodujący kod w setTimeout w następujący sposób:
setTimeout(()=> {
this.isLoading = true;
}, 0);
Lub wymuś wykrywanie zmian za pomocą takiego konstruktora constructor(private cd: ChangeDetectorRef) {}
:
this.isLoading = true;
this.cd.detectChanges();
Ale dlaczego ciągle mam ten błąd? Chcę to zrozumieć, aby w przyszłości uniknąć tych niepotrzebnych poprawek.