如何避免子组件在ngOnInit向父组件传值时触发NG0100错误
Angular NG0100错误解决方案求助
我遇到了NG0100错误,可通过示例复现该问题,请打开示例控制台查看错误信息。
场景背景
- 子组件(ChildComponent)暴露一个init EventEmitter,在ngOnInit生命周期钩子中触发。
- 父组件(ParentComponent)订阅子组件的init事件,在事件处理中模拟API调用,修改绑定值loading。
现象观察
在parent.component.html中:
<p>Parent Works!</p> <!-- 注释掉下方绑定可避免NG0100错误 --> loading binding 1: {{ loading }} <app-child (init)="onChildInit($event)"></app-child> <!-- 但同样的绑定在这里从未触发NG0100错误 --> loading binding 2: {{ loading }}
Angular加载父模板时的流程如下:
- Angular获取binding 1的loading值:此时为false。
- Angular初始化子组件,调用ChildComponent.ngOnInit,触发init事件将父组件的loading值改为true,引发NG0100错误。
- Angular获取binding 2的loading值:此时值始终为true,无异常。
需求说明
我有两个需求:
- 出于界面显示需求,必须保留binding 1。
- 子组件首次初始化时(ngOnInit或其他钩子)必须触发init事件,用于父组件初始化数据加载,因为子组件会传递一些无法通过其他方式获取的数据(示例中用*Math.random()*模拟)。
寻求合适的解决方案...
补充了基于PrimeNG Table的实际场景复现示例。
内容的提问来源于stack exchange,提问作者Kino101
相关产品推荐
相关产品推荐

