json - Angular html,如何对嵌套对象进行 ngfor 循环?
问题描述
我的服务器中有一个像这样的对象;
{
"NBA": {
"link": "https://www.nba.com/",
"ticketPrice": 50
},
"UEFA": {
"link": "https://www.uefa.com/",
"ticketPrice": 39
},
"CL": {
"link": "https://www.uefa.com/uefachampionsleague/",
"ticketPrice": 76
},
"EuroLeague": {
"link": "https://www.euroleague.net/",
"ticketPrice": 42
}
}
我用这段代码订阅了这个对象;
sportsObject : Sports[] //THIS IS THE MEMBER THAT SHOULD BE FILLED WITH THE JSON OBJECT GIVEN
object = Object;
ngOnInit(){
this.SportsService.getPrices().subscribe(data=>{
this.sportsObject = data;
})
}
这是我的html代码;
<div *ngFor="let key of Object.keys(sportsObject)">
<p>The {{key}} is {{{{sportsObject[key]}}</p>
</div>
但我得到“找不到类型为'object'的不同支持对象'[object Object]'。” 错误。如何正确迭代此 JSON 对象?
解决方案
*ngFor
默认情况下,指令支持像数组这样的可迭代对象。在这里,您可以尝试使用keyvalue
管道(Angular v6.1.0+)来迭代对象。尝试以下
<div *ngFor="let sport of sportsObject | keyvalue">
<p>The {{ sport.key }} is {{ sport.value.ticketPrice }}</p>
<p>More Info: <a [attr.href]="sport.value.link">{{ sport.value.link }}</a></p>
</div>
另外作为旁注,通常最好避免在指令绑定 ( [dir]="someFunc()"
and *dir="someFunc()"
) 和插值 ( {{ someFunc() }}
) 中调用函数。原因是如果您不控制更改检测策略,那么每个 CD 周期都会触发这些功能,并可能导致性能问题。
推荐阅读
- angular - MatTableDataSource 如何获取数据集的排序顺序?
- python - Tensorflow 计算错误结果(小数字不正确)
- ios - 将图像文件名修补到服务器 Swift 中
- mysql - 为什么 Sequel Pro 不显示 UUID 而是显示一些随机字符?
- storybook - 故事书复选框在关闭时失败
- python - 使用数据框中的 np.array 索引值设置新 df 值的更快方法
- sql - Clickhouse 子查询使用来自主查询的属性
- flutter - 使用颤振将文件保存在下载文件夹中
- flutter - 尝试在 Flutter 中使用 AES 打开加密文件
- android - 如何从android中的JSON中的嵌套数组中获取数据?