ExpressionChangedAfterItHasBeenCheckedError Explained
Explique-me por que continuo recebendo este erro:ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
Obviamente, eu só o obtenho no modo dev, isso não acontece na minha produção, mas é muito chato e simplesmente não entendo os benefícios de ter um erro no meu ambiente dev que não aparece no produto - Provavelmente por causa da minha falta de entendimento.
Normalmente, a correção é fácil, apenas envolvo o erro que causa o código em um setTimeout como este:
setTimeout(()=> {
this.isLoading = true;
}, 0);
Ou force a detecção de alterações com um construtor como este:constructor(private cd: ChangeDetectorRef) {}
:
this.isLoading = true;
this.cd.detectChanges();
Mas por que constantemente encontro esse erro? Quero entender para evitar essas correções hacky no futuro.