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

10-08 04:14