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 關注
- 168 瀏覽
添加回答
舉報