【发布时间】:2017-06-15 19:00:52
【问题描述】:
我正在使用的 API 为我提供了以下结构作为响应:
"data": [
{
"id": 5,
"name": "First name",
"parent": 0
},
{
"id": 1,
"name": "Second name",
"parent": 5
},
{
"id": 6,
"name": "Third name",
"parent": 1
},
{
"id": 15,
"name": "Fourth name",
"parent": 0
},
{
"id": 25,
"name": "Fifth name",
"parent": 5
}
]
我想围绕这个使用ngFor 构建一个树形结构,它支持无限数量的子级别。
这是我迄今为止尝试过的:
<div *ngFor="let d1 of _dataList">
<ul *ngIf="d1.parent == 0">
<li>
{{d1.name}}
<ul *ngFor="let d2 of _dataList">
<li *ngIf="d2.parent == d1.id">{{d2.name}}</li>
</ul>
</li>
</ul>
</div>
这行得通,但它很难看,我必须手动重复这个 X 级别的数据,从而留下硬编码的限制。
如何优化此代码以支持无限级别 - 并且看起来更好?
【问题讨论】:
-
我宁愿说它是重复的
-
您需要格式化您的数据并使用递归结构,如上面链接的问题。您可能应该对其进行格式化,以便每个具有子节点的节点都将它们放在一个数组中,然后您可以更轻松地递归传递数据。
-
谢谢 Seiyria,我会研究让 API 以不同格式返回列表的可能性。