如何在 Angular 7 中打印嵌套对象?
How to print a nested object in Angular 7?
我有一个嵌套对象数据-
"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,
我尝试使用 -
在我的 HTML 组件中打印它
<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
如何打印这个嵌套对象?
提前致谢!
您正在使用主要用于数组的 ngFor,而您没有。我建议您修改您的数据,或者如果它确实需要保留为一个对象,那么只需执行以下操作:例如 data.def.id
- 不需要 ngFor。
另一个获取名字的例子:
{{data?.def?.data?.firstname}}
我认为对于对象,您可能无法像使用数组那样使用 *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
我有一个嵌套对象数据-
"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, 我尝试使用 -
在我的 HTML 组件中打印它<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
如何打印这个嵌套对象? 提前致谢!
您正在使用主要用于数组的 ngFor,而您没有。我建议您修改您的数据,或者如果它确实需要保留为一个对象,那么只需执行以下操作:例如 data.def.id
- 不需要 ngFor。
另一个获取名字的例子:
{{data?.def?.data?.firstname}}
我认为对于对象,您可能无法像使用数组那样使用 *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