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

在Angular项目中如何读取并展示API返回的ArrayObject数组数据

正确实现方式

你原来的模板遍历逻辑本身是成立的,出现问题大概率是API返回数据没有正确处理,或者变量初始值设置不对,按以下步骤调整即可:

1. 组件层数据处理

首先确认接口返回数据已经转成可遍历的数组,同时可根据需求选择是否将二维数组转成可读性更高的对象数组:

// 可选:定义数据类型方便后续维护
interface User {
  id: number;
  name: string;
  status: number;
}

export class YourComponent {
  // 初始值必须设为空数组,避免遍历undefined报错
  report: User[] = [];

  constructor(private http: HttpClient) {}

  fetchData() {
    this.http.get('你的API接口地址').subscribe(res => {
      // 如果接口返回的是JSON字符串,先做解析
      const rawData = typeof res === 'string' ? JSON.parse(res) : res;
      // 可选:将二维数组转成对象数组,后续模板写起来更清晰
      this.report = rawData.map((item: any[]) => ({
        id: item[0],
        name: item[1],
        status: item[2]
      }));
    })
  }
}

2. 模板层代码

如果用了上面的对象数组转换,模板直接访问属性即可,可读性和可维护性更高:

<table>
  <thead>
    <tr>
      <th>用户ID</th>
      <th>用户名</th>
      <th>状态</th>
    </tr>
  </thead>
  <tbody *ngIf="report.length">
    <tr *ngFor="let user of report; trackBy: trackById">
      <td>{{user.id}}</td>
      <td>{{user.name}}</td>
      <td>{{user.status}}</td>
    </tr>
  </tbody>
  <!-- 数据为空时的提示 -->
  <tbody *ngIf="!report.length">
    <tr>
      <td colspan="3">暂无数据</td>
    </tr>
  </tbody>
</table>

组件中补充trackBy方法优化渲染性能:

trackById(index: number, item: User): number {
  return item.id;
}

如果不想做二维数组转对象的操作,保持原来的索引访问写法也可以,只需要保证report是正确的二维数组即可:

<tbody *ngIf="report.length">
  <tr *ngFor="let user of report; trackBy: trackByIndex">
    <td>{{user[0]}}</td>
    <td>{{user[1]}}</td>
    <td>{{user[2]}}</td>
  </tr>
</tbody>

对应的trackBy方法:

trackByIndex(index: number): number {
  return index;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:03