2 回答
TA贡献1775条经验 获得超11个赞
如果我理解正确的话,你能用模板中的嵌套循环来解决它吗?
<div *ngFor="let main of total_by_level | keyvalue">
{{label_name[main.key]}}
<div *ngFor="let sub of main.value | keyvalue">
{{label_name[sub.key]}}
</div>
</div>
这将导致:
Network
Main
Drops
Drops Aluminium
Misc
VANNE
TA贡献1827条经验 获得超8个赞
您在这里有 2 个选择:
调整您的 HTML 以适当地循环
total_by_level
和查询label_name
在代码中构建输出
看起来您两种都尝试过,因此对其中任何一种都持开放态度。就我个人而言,我更喜欢在代码中做尽可能多的事情,并让 HTML 尽可能简单,所以我会采用方法 2。
在ngOnInit()
(这应该是您进行任何初始处理的地方),我将根据 上的结构构建一个数组total_by_level
。
output: any[];
ngOnInit() {
this.output = Object.keys(this.total_by_level).map(levelKey => {
const child = this.total_by_level[levelKey];
return {
level: {
label: this.label_name[levelKey]
},
children: Object.keys(child).map(childKey => ({
label: this.label_name[childKey],
value: child[childKey]
}))
};
});
}
然后在 HTML 中绑定到这个数组就变得很简单:
<div *ngFor="let item of output">
{{item.level.label}}
<div *ngFor="let child of item.children">
{{child.label}}
{{child.value}}
</div>
</div>
您正在处理一些奇怪的数据结构,我不确定您的术语,所以我在这里猜测了一些。您可以采用这个想法的概念并使用它。我还假设 中只有 1 个嵌套子级total_by_level。
演示: https: //stackblitz.com/edit/angular-upqdex
- 2 回答
- 0 关注
- 94 浏览
添加回答
举报