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

Angular中如何使用*ngFor遍历嵌套JSON并获取数据?

解决Angular中遍历嵌套JSON对象的*ngFor错误问题

错误原因

myData.data.ZSLatencies是一个键值对对象(键为"Recharging API Latency",对应的值是延迟数据数组),而Angular的*ngFor指令只能遍历可迭代对象(如数组),直接遍历对象会触发错误。

解决方案

下面提供两种可行的实现方式:

方式1:在模板中使用keyvalue管道

利用Angular内置的keyvalue管道将对象转换为可遍历的键值对数组,直接在模板中处理:

<div *ngFor="let entry of myData.data.ZSLatencies | keyvalue">
  <!-- 展示API名称 -->
  <h3>{{ entry.key }}</h3>
  <!-- 遍历延迟数据数组 -->
  <div *ngFor="let latency of entry.value">
    <p>{{ latency[0] }}: {{ latency[1] }} 次</p>
  </div>
</div>

方式2:在组件类中预处理数据

提前将对象转换为结构化数组,让模板逻辑更简洁:

  1. 在组件类中添加处理逻辑:
// 定义数据类型(可选,增强类型安全)
interface LatencyItem {
  apiName: string;
  latencies: [string, number][];
}

latencyData: LatencyItem[] = [];

ngOnInit(): void {
  // 将对象转换为数组
  this.latencyData = Object.entries(this.myData.data.ZSLatencies).map(([key, value]) => ({
    apiName: key,
    latencies: value
  }));
}
  1. 在模板中遍历预处理后的数组:
<div *ngFor="let item of latencyData">
  <h3>{{ item.apiName }}</h3>
  <div *ngFor="let latency of item.latencies">
    <p>{{ latency[0] }}: {{ latency[1] }} 次</p>
  </div>
</div>

内容的提问来源于stack exchange,提问作者Md Ratan Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:20