You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免子组件在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加载父模板时的流程如下:

  1. Angular获取binding 1的loading值:此时为false。
  2. Angular初始化子组件,调用ChildComponent.ngOnInit,触发init事件将父组件的loading值改为true,引发NG0100错误。
  3. Angular获取binding 2的loading值:此时值始终为true,无异常。

需求说明

我有两个需求:

  1. 出于界面显示需求,必须保留binding 1。
  2. 子组件首次初始化时(ngOnInit或其他钩子)必须触发init事件,用于父组件初始化数据加载,因为子组件会传递一些无法通过其他方式获取的数据(示例中用*Math.random()*模拟)。

寻求合适的解决方案...

补充了基于PrimeNG Table的实际场景复现示例。

内容的提问来源于stack exchange,提问作者Kino101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:48:24