我有一个嵌套对象数据-
"data": {
"serial": "123",
"def": {
"id": "456",
"data": {
"firstname": "abc",
},
"method": "post",
},
"ghi": {
"id": "456",
"data": {
"amount": "3500.0",
},
"method": "post",
},
"jkl": "done"
}我将它存储在items object.Then中,我尝试使用-
<div *ngFor="let item of items | keyvalue">
<div>
<div>{{item.key}}:{{item.value}}</div>
</div>
</div>但产出是-
serial: 123
def: [object Object]
ghi: [object Object]
jkl: done如何打印这个嵌套对象?提前谢谢!
发布于 2021-03-29 22:21:34
我认为对于一个对象,您可能无法使用*ngFor,就像您对数组使用它的方式一样。我的解决方案是在ts文件中使用这样的递归函数:
expand(data: any): string[] {
let stringArr = [];
for (const prop in data) {
data[prop] instanceof Object
? (stringArr = stringArr.concat([`${prop}: `]).concat(this.expand(data[prop])))
: stringArr.push(`${prop}: ${data[prop]}`);
}
return stringArr;
}然后在HTML文件中:
<div *ngFor = " let item of expand(data)">
{{ item }}
</div>然后它将显示在您的页面上:
serial: 123
def:
id: 456
data:
firstname: abc
method: post
ghi:
id: 456
data:
amount: 3500.0
method: post
jkl: done发布于 2021-03-29 20:43:18
您使用的是ngFor,它主要用于数组,而您没有。我建议您修改您的数据,或者如果它确实需要保留为一个对象,那么只需这样做:例如,data.def.id -不需要ngFor。
另一个获得名字的例子是:
{{data?.def?.data?.firstname}}https://stackoverflow.com/questions/66861255
复制相似问题