如何编写可以遍历所有嵌套数据并在 HTML 中显示嵌套列表的可重用模板
How to write reusable template which can go through all nested data and display nested lists in HTML
我正在寻找一些解决方案来制作可重复使用的模板,该模板可以迭代所有嵌套数据并在列表中显示内容。
let data = [
{
"label":"test1",
"hierarchy":[
{
"label":"test11",
}
]
},
{
"label":"test2",
"hierarchy":[
{
"label":"test21",
"hierarchy":[
{
"label":"test211",
"hierarchy":[
{
"label":"test2111",
"hierarchy":[
{
"label":"test21111",
}
]
}
]
}
]
}
]
},
{
"label":"test3",
"hierarchy":[
{
"label":"test31",
"hierarchy":[
{
"label":"test311",
"hierarchy":[
{
"label":"test3111",
"hierarchy":[
{
"label":"test31111",
}
]
}
]
}
]
}
]
},
]
<div>
<div>
<li *ngFor="let viewList of data; >
<ul class="nested">
<li *ngFor="let subAncesstorList of viewList.hierarchy; let j = index">
<label style="margin: 0" class="labelhover">
{{ subAncesstorList.label }}
</label>
<div *ngIf="subAncesstorList.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList of subAncesstorList.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList.label }}
</label>
<div *ngIf="nestedsubAncesstorList.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList1 of nestedsubAncesstorList.hierarchy; let k = index">
<label style="margin: 0" class="labelhover">
{{ nestedsubAncesstorList1.label }}
</label>
<div *ngIf="nestedsubAncesstorList1.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList2 of nestedsubAncesstorList1.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList2.label }}
</label>
<div *ngIf="nestedsubAncesstorList2.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList3 of nestedsubAncesstorList2.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList3.label }}
</label>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</li>
</div>
</div>
我如何使用最少的 HTML 代码来制作显示嵌套列表的循环?
我尝试了检查层次结构是否存在的普通方法,但它不支持动态数据。
您可以使用 ng-template 处理以下数据
<div *ngFor="let node of data">
<ng-container *ngTemplateOutlet="nodeTemplate; context:{$implicit: node}"></ng-container>
</div>
<ng-template let-node #nodeTemplate>
<ul class="nested">
<li>
<label style="margin: 0" class="labelhover">
{{ node.label }}
</label>
<div *ngIf="node.hierarchy">
<ng-template ngFor let-child [ngForOf]="node.hierarchy">
<ng-container *ngTemplateOutlet="nodeTemplate; context:{$implicit: child}"></ng-container>
</ng-template>
</div>
</li>
</ul>
</ng-template>
我正在寻找一些解决方案来制作可重复使用的模板,该模板可以迭代所有嵌套数据并在列表中显示内容。
let data = [
{
"label":"test1",
"hierarchy":[
{
"label":"test11",
}
]
},
{
"label":"test2",
"hierarchy":[
{
"label":"test21",
"hierarchy":[
{
"label":"test211",
"hierarchy":[
{
"label":"test2111",
"hierarchy":[
{
"label":"test21111",
}
]
}
]
}
]
}
]
},
{
"label":"test3",
"hierarchy":[
{
"label":"test31",
"hierarchy":[
{
"label":"test311",
"hierarchy":[
{
"label":"test3111",
"hierarchy":[
{
"label":"test31111",
}
]
}
]
}
]
}
]
},
]
<div>
<div>
<li *ngFor="let viewList of data; >
<ul class="nested">
<li *ngFor="let subAncesstorList of viewList.hierarchy; let j = index">
<label style="margin: 0" class="labelhover">
{{ subAncesstorList.label }}
</label>
<div *ngIf="subAncesstorList.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList of subAncesstorList.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList.label }}
</label>
<div *ngIf="nestedsubAncesstorList.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList1 of nestedsubAncesstorList.hierarchy; let k = index">
<label style="margin: 0" class="labelhover">
{{ nestedsubAncesstorList1.label }}
</label>
<div *ngIf="nestedsubAncesstorList1.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList2 of nestedsubAncesstorList1.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList2.label }}
</label>
<div *ngIf="nestedsubAncesstorList2.hierarchy">
<ul class="nested">
<li *ngFor="let nestedsubAncesstorList3 of nestedsubAncesstorList2.hierarchy; let k = index">
<label style="margin: 0" class="labelhover" >
{{ nestedsubAncesstorList3.label }}
</label>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</li>
</div>
</div>
我如何使用最少的 HTML 代码来制作显示嵌套列表的循环?
我尝试了检查层次结构是否存在的普通方法,但它不支持动态数据。
您可以使用 ng-template 处理以下数据
<div *ngFor="let node of data">
<ng-container *ngTemplateOutlet="nodeTemplate; context:{$implicit: node}"></ng-container>
</div>
<ng-template let-node #nodeTemplate>
<ul class="nested">
<li>
<label style="margin: 0" class="labelhover">
{{ node.label }}
</label>
<div *ngIf="node.hierarchy">
<ng-template ngFor let-child [ngForOf]="node.hierarchy">
<ng-container *ngTemplateOutlet="nodeTemplate; context:{$implicit: child}"></ng-container>
</ng-template>
</div>
</li>
</ul>
</ng-template>