angular - 角度递归 ng-template 仅在 UI 中显示被按下的项目的子项
问题描述
我有一个递归的 ng 模板:
<ng-template #recursiveNavList let-tabs="tabs" let-level="level">
<ng-container *ngFor="let tab of tabs; let i = index">
<a mat-tab-link
[routerLink]="[tab.category.facet]"
#rla="routerLinkActive"
[active]="rla.isActive"
routerLinkActive>
<span>
{{tab.category}}
</span>
</a>
<div *ngIf="tab.subCategories.length > 0 && (rla.isActive || tab.category.facet==='all')">
<ng-container *ngTemplateOutlet="recursiveNavList; context: { tabs: tab.subCategories, level: level + 1}"></ng-container>
</div>
</ng-container>
</ng-template>
<ng-container *ngTemplateOutlet="recursiveNavList; context: { tabs: facetService.facets, level:0}"></ng-container>
我的 json 看起来像 -
[
{"category":{"facet":"inProcess","count":"1"},"subCategories":[]},
{"category":{"facet":"all","count":"2"},"subCategories":[{"category":{"facet":"conference","count":"2"},"subCategories":[{"category":{"facet":"paper","count":"1"},"subCategories":[]},{"category":{"facet":"poster","count":"1"},"subCategories":[]}]}]}
]
I should display sub categories in the UI only if his direct parent is selected (or if it's a direct child of "all")
一开始我希望看到:
处理所有会议
在用户按下会议后,他会看到
inProcess 所有会议论文海报
我在 div 上做了一个 if 条件,它只调用带有子类别的递归是 - (rla.isActive || tab.category.facet==='all)'。但问题是,如果用户点击“海报”,会议将关闭,因为现在该路线不活跃。
是否有任何简单的方法可以向“div”内的“if”添加一个条件,即如果他的子类别之一打开,则选项卡将保持打开状态?
我尽量避免添加打开某些标志的点击功能。
解决方案
推荐阅读
- google-bigquery - 在 Google BigQuery 中将数字格式化为没有逗号 (1,000,000 -> 1000000)
- tensorflow - tensorflow 训练后量化支持的操作列表
- python-3.x - 如何将多维列表转换为 numpy.array 以适应 cv2.fillConvexPoly
- c++ - 哪个 C++ 标准包含文件强制将代码/数据添加到目标文件中?
- ios - iOS如何从C函数调用静态Objective-C方法?
- c# - 如何检查 Fluent Migrator 中是否存在序列
- omnet++ - 如何在相扑中使用小数字作为路口名称?
- terraform - 如何将更改反向传播到父节点?
- yii2 - 邮递员为 YII2 中开发的发布请求抛出“意外的'<'”错误
- jquery - 尝试使用 ajax 发布表单数据时,表单没有发布任何内容