html - 渲染匹配数组参数的 div
问题描述
我在 Angular 8 中渲染参数时遇到问题,我从 API 获取数据,我需要在与这些数据匹配的 div 中渲染这些数据,但我遇到了数据显示在每个div 中的问题,它看起来像这样:
在这里,“Drops”、“Misc”、“Network”是需要渲染较低类别的主要 div。Altought,我想要的是例如,在主“Drops”中只有“Drops Aluminium”,在“Misc”中只有“VANNE”,在“Network”中只有“Main”。较低的类别应仅在其 id 位于主id内时呈现(见下图 2)。
我尝试过的:
绑定 div 内的值,因为所有主要和较低类别的 id 如下所示:
这是一个 stackblitz 示例:https ://stackblitz.com/edit/angular-me2ppb?file=src%2Fapp%2Fapp.component.ts
提前感谢您的时间和帮助,非常感谢!
解决方案
您在这里有 2 个选项:
调整您的 HTML 以适当地循环
total_by_level
和查询label_name
在代码中构建输出
看起来你已经尝试了两者,因此对任何一个都持开放态度。就个人而言,我更喜欢在代码中做尽可能多的事情,并使 HTML 尽可能地笨拙,所以我会采用方法 2。
在ngOnInit()
(这应该是您进行任何初始处理的地方),我将基于total_by_level
.
output: any[];
ngOnInit() {
this.output = Object.keys(this.total_by_level).map(levelKey => {
const child = this.total_by_level[levelKey];
return {
level: {
label: this.label_name[levelKey]
},
children: Object.keys(child).map(childKey => ({
label: this.label_name[childKey],
value: child[childKey]
}))
};
});
}
然后在你的 HTML 中绑定到这个数组变得很简单:
<div *ngFor="let item of output">
{{item.level.label}}
<div *ngFor="let child of item.children">
{{child.label}}
{{child.value}}
</div>
</div>
你正在处理一些奇怪的数据结构,我不确定你的术语,所以我在这里猜到了一点。您可以采用这个想法的概念并使用它。我还假设在total_by_level
.
推荐阅读
- python - `object.from` 属性
- android - 是否可以从自定义视图调用 DialogFragment?
- log4j - 如何在纱线上配置 log4j?
- powershell - 适用于 Windows Server 2003 的 Powershell 调用命令
- javascript - 在 vuejs 组件中监听 javascript 自定义事件
- scala - 如何从 Scala 程序中检测堆大小?
- html - 多个类选择器不工作 CSS?
- python - Python 3 中的 Lambda 排序
- python - 为什么isdigit()在数字之间有空格时返回false以及如何解决它
- html - bxSlider 响应式设计 - 调整图像大小