angular - 分层树视图展开折叠使用 Ul li in angular 8
问题描述
我是 Angular 的新手,我有这么多代码可以通过递归调用来表示树视图中的分层 json 数据。这段代码工作正常,但我想使用 CARET 图标展开和折叠树视图,但我没有找到任何方法。
<h1>Angular 2 Recursive List</h1>
<ul>
<ng-template #recursiveList let-list>
<li *ngFor="let item of list">
{{item.name}}
<ul *ngIf="item.children.length > 0"> <!-- item.subnodes.length -->
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: item.children }"></ng-container>
</ul>
</li>
</ng-template>
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: menuList}"></ng-container>
</ul>
“menuList”的有效载荷
[
{
"menuId": 1,
"menuName": "Inspection",
"icon": "",
"type": 1,
"formId": 0,
"formUUID": null,
"formName": null,
"menu": [
{
"menuId": 17,
"menuName": null,
"icon": "",
"type": 2,
"formId": 0,
"formUUID": "2f84a801-cc3e-4807-a68c-cdd3cc9df9af",
"formName": "Production Line",
"menu": null
}
]
}
]
解决方案
<h1>Angular 2 Recursive List</h1>
<ul>
<ng-template #recursiveList let-list>
<li *ngFor="let item of list">
{{item.name}}
<!--add a button-->
<button (click)="item.isopen=!item.isopen">click</button>
<!--change the condition-->
<ul *ngIf="item.children.length > 0 && item.isopen">
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: item.children }"></ng-container>
</ul>
</li>
</ng-template>
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: menuList}"></ng-container>
</ul>
<!--just for check values-->
<pre>{{menuList|json}}</pre>
推荐阅读
- c# - 如何在 .NET 中反序列化为本地集合?
- python - 如何在 Python 的列表中找到最小值或最大值
- discord.js - 如何检查反应成员 discord.js 的角色
- php - the_category function is not working properly; the categories are not showing where they are supposed to be
- .net - 为某些选项卡关闭 WPF TabControl ContentTemplate
- amazon-web-services - 如何在 cloudformation 中引用 AWS 托管策略 arn?
- scala - KafkaConsumer Position() vs Committed()
- google-sheets - 提取所有部分匹配项:聚合公式以在 GOOGLE SHEET 中复制
- javascript - 发出事件后清除 vue 输入字段
- ios - 图像上的快速矢量化逐像素操作