从ngAfterViewInit
的 Angular 文档
我有一个组件 C ,它嵌套在组件 T 中
组件 C 实现以下 Hook 。
ngAfterViewInit(): void {
console.log("afterViewInit");
debugger;
}
组件 T 是一个表-每当用户单击一个单元格时,都会对其进行更改检测。
组件 C 可以在表格单元格中找到。
每当我单击该单元格时,都可以在控制台中看到
afterViewInit
登录。我的堆栈跟踪如下:
问题
是什么导致ngAfterViewInit在父级更改时被调用?是否正在重新渲染组件(即从DOM中删除并替换了组件)?
以及如何防止这种情况? -即-如何确保ngAfterViewInit仅被调用一次
更新:
将组件C 和组件T 都更改为使用 ChangeDetectionStrategy.OnPush
afterViewInit
仍在进行任何更改。 最佳答案
这可能是由于子组件使用了一些外部指令,这些子指令也绑定(bind)了您提到的组件中的值。
相关文章:
Angular 7: ChangeDetectorRef detectChanges() causes infinite loop when called from inside a subscription