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

Angular使用*ngFor渲染数据时出现NG0900错误求助

Angular NG0900错误排查方案

以下是针对遇到的“*ngFor正常渲染但控制台抛出NG0900”问题的排查方向:

  • 检查editions初始值类型
    如果组件初始化时把editions设为对象(比如editions = {}),哪怕后续赋值成数组,Angular首次渲染模板时会尝试遍历初始的对象,进而抛出错误。解决办法:将初始值设为空数组:

    editions: Cigales[] = [];
    
  • 确认模板绑定变量正确性
    核对HTML模板里*ngFor绑定的是不是editions,有没有写错变量名(比如误写成单个对象edition)。比如错误示例:

    <!-- 错误:绑定了单个对象edition -->
    <div *ngFor="let item of edition">{{item.name}}</div>
    

    正确绑定要指向数组:

    <div *ngFor="let item of editions">{{item.name}}</div>
    
  • 排查异步赋值的临时值问题
    如果在获取数据的异步流程里,有短暂把editions赋值为对象的操作(比如请求发起时临时赋值占位),哪怕后续改成数组,变更检测还是会捕捉到中间的对象状态并报错。要避免这种写法:

    // 错误:临时赋值对象
    this.editions = {};
    this.cigalesService.getEditions().subscribe(res => {
      this.editions = res;
    });
    
  • 验证服务返回数据结构
    虽然打印this.editions是数组,但可以在订阅回调里再加一层验证,确保服务返回的确实是数组,而非嵌套在对象里的数组:

    this.cigalesService.getEditions().subscribe(res => {
      // 若服务返回{ data: [...] }这类结构,需提取数组部分
      this.editions = Array.isArray(res) ? res : res.data;
      console.log(Array.isArray(this.editions)); // 再次确认类型
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:10:36