Correções componentes que tem onInit
carolinegoncalveszup opened this issue · 3 comments
What would you like to be added:
Atualmente as funções do ciclo de vida do angular ngOnInit e ngAfterViewInit são disparados mesmo se os componentes não estiverem visíveis na tela (com um ngIf false por exemplo).
Desta forma, quando os componentes tem a função de onInit, ela deve ser disparada quando o componente está visível na tela.
A ideia original para resolver esse problema é verificar se o componente tem um parentNode, desta forma, validando se está ou não visível. Ou com a propriedade isConnected que o nativeElement tem. O problema (que foi percebido de forma empírica) é que o ciclo de vida é disparado quando o componente ainda tem um parentNode null ou isConnected false e quando o nó fica realmente visível (com as variáveis mencionadas anteriormente com os valores 'certos') se não houver alteração de input props, o ciclo de vida não é verificado novamente fazendo com que o onInit não seja chamado.
Atualmente uma implementação com timeout foi feita, porém precisamos de uma outra abordagem melhor.
Componentes que tem este problema:
-Container
-LazyComponent
-ListView (após a refatoração em #83)
Why is this needed:
Issue do angular associada angular/angular#13921
Este problema foi 'resolvido' com o timeout nos seguintes componentes: Container ,LazyComponent, ListView. Uma abordagem melhor poderá ser feita
Considerando que o problema foi resolvido, mesmo que de uma maneira não-recomendável, vou fechar essa issue.