O Angular lança um ExpressionChangedAfterItHasBeenCheckedError quando um valor de expressão foi alterado após a detecção de mudanças ter sido concluída. O Angular só lança este erro no modo de desenvolvimento.
No modo de desenvolvimento, o Angular realiza uma verificação adicional após cada execução de detecção de mudanças, para garantir que os bindings não mudaram. Isso captura erros onde a view fica em um estado inconsistente. Isso pode ocorrer, por exemplo, se um método ou getter retorna um valor diferente a cada vez que é chamado, ou se um component filho altera valores em seu pai. Se qualquer um desses casos ocorrer, isso é um sinal de que a detecção de mudanças não está estabilizada. O Angular lança o erro para garantir que os dados sejam sempre refletidos corretamente na view, o que previne comportamento errático da UI ou um possível loop infinito.
Este erro geralmente ocorre quando você adicionou expressões de template ou começou a implementar lifecycle hooks como ngAfterViewInit ou ngOnChanges. Também é comum ao lidar com status de carregamento e operações assíncronas, ou quando um component filho altera os bindings de seu pai.
Depurando o erro
Os source maps gerados pelo CLI são muito úteis ao depurar. Navegue pela pilha de chamadas até encontrar uma expressão de template onde o valor exibido no erro mudou.
Certifique-se de que não há alterações nos bindings no template após a detecção de mudanças ser executada. Isso geralmente significa refatorar para usar o lifecycle hook correto do component para seu caso de uso. Se o problema existe dentro de ngAfterViewInit, a solução recomendada é usar um constructor ou ngOnInit para definir valores iniciais, ou usar ngAfterContentInit para outros bindings de valores.
Se você está fazendo binding para métodos na view, certifique-se de que a invocação não atualize nenhum dos outros bindings no template.
Leia mais sobre qual solução é certa para você em 'Everything you need to know about the "ExpressionChangedAfterItHasBeenCheckedError" error' e por que isso é útil em 'Angular Debugging "Expression has changed after it was checked": Simple Explanation (and Fix)'.