あなたが好きなレンダリングする前にデータを準備することができます:
function flatten(arr: any[], property: string, childrenProperty: string, level: number = 1, dict: any = {}) {
return arr.reduce((acc, cur) => {
dict[level] = [...dict[level] || [], { level, data: cur.name }];
flatten(cur[childrenProperty], property, childrenProperty, level + 1, dict)
return dict;
}, dict);
}
...
export class AppComponent {
nodes = {
name: 'ABC Product',
children: [
{
name: 'XYZ Product',
children: [
{
name: 'GHI Product',
children: []
},
]
},
{
name: 'DEF Product',
children: []
},
]
};
flattenNodes: any[];
ngOnInit() {
let dict = flatten([this.nodes], 'name', 'children');
this.flattenNodes = Object.keys(dict).sort((a: any, b: any) => a - b).reduce((acc, cur) => {
return [...acc, ...dict[cur].sort((a, b) => (a.data < b.data) ? -1 : (a.data > b.data) ? 1 : 0)];
}, [])
}
}
Plunker Example
は、なぜあなたはあなたの `nodes`を平らにすることはできません
も参照してください。とクレアフラットなデータ構造ですか? –
Webサービスが私に返ってくる形式を制御できないのですか、それともJSでそれを平坦化して解析するのですか? –
あなたのアプリケーションコードでJS内にあることを確認してください –