javascript - 如何在Angular中打印带有子表行的表行?
问题描述
我正在寻找一种在使用 Angular 的表中打印从 API 接收到的数据的方法。表有不同的折叠。折叠有几行,同时这些行有子行,其中一些有更多的子行。
这是json文件:
{
"collapse1": [
{
"name": "Soil",
"budget": 12345,
"child": [
{
"name": "Shopping",
"budget": 12345
},
{
"name": "Financial",
"budget": 12345
}
]
},
{
"name": "Exterior",
"budget": 12345,
"child": [
{
"name": "Shopping",
"budget": 12345
},
{
"name": "Financial",
"budget": 12345
}
]
},
{
"name": "Obra",
"budget": 12345,
"child": [
{
"name": "Shopping",
"budget": 12345
},
{
"name": "Financial",
"budget": 12345
}
]
},
{
"name": "Professional honoraries",
"budget": 12345,
"child": [
{
"name": "Shopping",
"budget": 12345
},
{
"name": "Financial",
"budget": 12345
}
]
}
],
"collapse2":[
{
"name": "Soil",
"budget": 12345,
"child": [
{
"name": "Shopping",
"budget": 12345
},
{
"name": "Financial",
"budget": 12345
}
]
},
{
"name": "Construction",
"budget": 12345,
"child": [
{
"name": "Data Center",
"budget": 12345,
"child": [
{
"name": "Development & Design",
"budget": 12345,
"child": [
{
"name": "Raw Land",
"budget": 12345
},
{
"name": "Land Development",
"budget": 12345
},
{
"name": "Fiber Connection Upgrade",
"budget": 12345
}
]
}
]
}
]
}
]
}
我正在寻找一种解决方案来动态打印包含 json 文件中数据的表。我尝试为第一次崩溃执行以下操作,但没有成功。
<ng-container *ngFor="let collapse of collapse1">
<tr class="group2 collapse" [collapse]="isCollapsedGroup2">
<td>{{ collapse.name }}</td>
<td></td>
<td></td>
</tr>
<ng-container *ngFor="let child of collapse1.child">
<tr class="tablerow-sub collapse" [collapse]="isCollapsedGroup2">
<td>
<em class="pl-3">{{ child.name }}</em>
</td>
<td></td>
<td></td>
</tr>
</ng-container>
</ng-container>
解决方案
You can use ng-template to have a recursive loop in the template like this https://stackblitz.com/edit/angular-playground-excmau?file=app%2Fapp.component.html
<ng-template #row let-data="collapse">
<tr>
<td>{{ data.name }}</td>
<td>{{ data.budget }}</td>
</tr>
<ng-container *ngIf="data.child">
<ng-container *ngFor="let child of data.child" [ngTemplateOutlet]="row"
[ngTemplateOutletContext]="{ collapse: child }"></ng-container>
</ng-container>
</ng-template>
<table>
<ng-container *ngFor="let c of collapse">
<ng-container [ngTemplateOutlet]="row" [ngTemplateOutletContext]="{ collapse: c }"></ng-container>
</ng-container>
</table>
推荐阅读
- c++ - C++ AST 设计,修改向上转换的节点成员以更改子节点的最佳方法
- sql-server - 我们如何在 SQL Server 中查看索引的列
- javascript - YouTube 播放器 API 未按文档说明工作
- c# - EPPlus 在尝试从包含 FILTER 函数的单元格中获取值时返回 {#NAME?}
- firebase - 了解 Firebase 受众成员资格期限
- python - Python字符串列表,无法正确格式化
- ruby - 创建报告后的 rspec 挂钩
- android - 为什么谷歌 mlkit 条码扫描器会多次扫描同一个条码,甚至是其中的一部分
- hibernate - JPA问题的独特价值
- html - 打开一个简单的文本文件时出现奇怪的 SSL 问题,这怎么可能?