来自ngAfterViewInit
ngAfterViewInit()
在Angular初始化组件后做出响应 观点和儿童观点。
在第一个ngAfterContentChecked()之后调用一次。
仅限组件的挂钩。
我有一个组件 C ,它嵌套在组件 T
中组件 C 实现以下挂钩。
ngAfterViewInit(): void {
console.log("afterViewInit");
debugger;
}
组件 T 是一个表 - 只要用户单击一个单元格,就会对其进行更改检测。
组件 C 可以在表格单元格中找到。
每当我点击单元格时,我都会在控制台中看到afterViewInit
。
我的堆栈跟踪如下:
DynamicComponentWrapper.ngAfterViewInit (动态成分-wrapper.ts:72) 的 View_TableComponent18.detectChangesInternal (/TableModule/TableComponent/component.ngfactory.js:904) AppView.detectChanges(view.js:425)DebugAppView.detectChanges (view.js:620)ViewContainer.detectChangesInNestedViews (view_container.js:67)View_TableComponent17.detectChangesInternal (/TableModule/TableComponent/component.ngfactory.js:962) AppView.detectChanges(view.js:425)DebugAppView.detectChanges (view.js:620)ViewContainer.detectChangesInNestedViews (view_container.js:67)View_TableComponent15.detectChangesInternal (/TableModule/TableComponent/component.ngfactory.js:1043) AppView.detectChanges(view.js:425)
是什么导致在父更改时调用ngAfterViewInit?组件是否被重新呈现 - 即从DOM中删除并替换?
我该如何防止这种情况? - 即 - 我如何确保只调用一次ngAfterViewInit
更新
更改组件C 和组件T 后,使用 ChangeDetectionStrategy.OnPush afterViewInit
仍会在任何更改时被调用。
答案 0 :(得分:1)
这可能是由于子组件使用了一些外部指令,这些子指令也绑定了您提到的组件中的值。
相关帖子: