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

Angular 12使用ngFor遍历API返回对象时报错如何解决?

问题原因

*ngFor 指令仅支持绑定数组等可迭代(Iterable)类型,你从接口拿到的playerData是单个对象,不符合*ngFor的入参要求,因此触发报错。


解决方法1:遍历对象的键/值对(需要展示对象所有属性时使用)

第一步:修改ts文件,将对象转换为可迭代结构

使用Object.entries()把对象转换成[键, 值]格式的二维数组,调整getOne方法:

getOne(){
  this.dataService.getProfile(this.username).subscribe(res=>{
    // 将单个对象转换为可迭代的键值对数组
    this.playerData = Object.entries(res)
  })
}

第二步:调整html模板渲染逻辑

<div *ngFor="let [key, value] of playerData">
  {{key}}: {{value}}
</div>

渲染效果示例:

id: 9
name: test
username: testmg
email: test@gmail.com
...

解决方法2:直接渲染单个对象属性(不需要遍历所有属性时使用)

如果你的需求只是展示单个用户的指定信息,完全不需要使用*ngFor,直接读取对象属性即可,代码更简洁:

<div>用户ID:{{playerData.id}}</div>
<div>用户昵称:{{playerData.name}}</div>
<div>登录账号:{{playerData.username}}</div>
<div>联系邮箱:{{playerData.email}}</div>

这种场景下ts文件的getOne赋值逻辑不需要修改,保持原有写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:48:01