加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

每次changeDetection后调用Angular ngAfterViewInit

发布时间:2020-12-17 06:59:33 所属栏目:安全 来源:网络整理
导读:来自ngAfterViewInit的角度文档 ngAfterViewInit() Respond after Angular initializes the component’s views and child views. Called once after the first ngAfterContentChecked(). A component-only hook. 我有一个嵌套在组件T内的组件C. 组件C实现以
来自ngAfterViewInit的角度文档

ngAfterViewInit()

Respond after Angular initializes the component’s
views and child views.

Called once after the first ngAfterContentChecked().

A component-only hook.

我有一个嵌套在组件T内的组件C.

组件C实现以下钩子.

ngAfterViewInit(): void {
        console.log("afterViewInit");
        debugger;
    }

组件T是一个表 – 只要用户单击一个单元格,就会对其进行更改检测.

组件C可以在表格单元格中找到.

每当我单击单元格时,我都会看到在控制台中登录后的ViewInit.

我的堆栈跟踪如下:

DynamicComponentWrapper.ngAfterViewInit
(dynamic-component-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.

解决方法

这可能是由于一些外部指令与子组件一起使用,您提到的组件中的值也会与其绑定.

相关文章:

Angular 7: ChangeDetectorRef detectChanges() causes infinite loop when called from inside a subscription

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读