Angular 5 嵌套 ngFor 使用一维数组
Angular 5 nested ngFor using 1 dimentional array
抱歉没有给出示例,但我不确定如何创建 codepen angular 5 个示例。无论如何。我想知道是否可以使用 *ngFor 重复这个数组,但只显示一次值(没有重复)。检查我的按钮示例图像,了解它的外观。这个阵列可以吗?也许使用管道或类似的东西?
可能的解决方案:
首先构造你的数组:
this.array = [
{level1: "1", level2: "1.1", level3: "1.1.1"},
{level1: "1", level2: "1.1", level3: "1.1.2"},
{level1: "1", level2: "1.2", level3: "1.2.1"}
];
this.fa = {}
this.array.forEach(obj => {
if(!this.fa[obj.level1]) this.fa[obj.level1] = {};
if(!this.fa[obj.level1][obj.level2]) this.fa[obj.level1][obj.level2] = [];
this.fa[obj.level1][obj.level2].push(obj.level3)
})
假设您只有 3 个级别。然后你会得到如下结构:
{
"1": {
"1.1": [
"1.1.1",
"1.1.2"
]
}
}
然后在模板中遍历:
<div *ngFor="let i of Object.keys(fa)">
{{i}}
<div *ngFor="let j of Object.keys(fa[i])">
{{j}}
<div *ngFor="let k of fa[i][j]">
{{k}}
</div>
</div>
</div>
不要忘记将 Object
变量绑定到您的模板,在您的组件中添加以下行:
Object = Object;
完整示例:
@Component({
selector: 'app',
template: `
<div *ngFor="let i of Object.keys(fa)">
{{i}}
<div *ngFor="let j of Object.keys(fa[i])">
{{j}}
<div *ngFor="let k of fa[i][j]">
{{k}}
</div>
</div>
</div>
`,
})
export class AppComponent {
array = [
{level1: "1", level2: "1.1", level3: "1.1.1"},
{level1: "1", level2: "1.1", level3: "1.1.2"},
{level1: "1", level2: "1.2", level3: "1.2.1"}
];
fa = {};
Object = Object;
constructor() {
this.array.forEach(obj => {
if (!this.fa[obj.level1]) this.fa[obj.level1] = {};
if (!this.fa[obj.level1][obj.level2]) this.fa[obj.level1][obj.level2] = [];
this.fa[obj.level1][obj.level2].push(obj.level3)
})
}
}
抱歉没有给出示例,但我不确定如何创建 codepen angular 5 个示例。无论如何。我想知道是否可以使用 *ngFor 重复这个数组,但只显示一次值(没有重复)。检查我的按钮示例图像,了解它的外观。这个阵列可以吗?也许使用管道或类似的东西?
可能的解决方案:
首先构造你的数组:
this.array = [
{level1: "1", level2: "1.1", level3: "1.1.1"},
{level1: "1", level2: "1.1", level3: "1.1.2"},
{level1: "1", level2: "1.2", level3: "1.2.1"}
];
this.fa = {}
this.array.forEach(obj => {
if(!this.fa[obj.level1]) this.fa[obj.level1] = {};
if(!this.fa[obj.level1][obj.level2]) this.fa[obj.level1][obj.level2] = [];
this.fa[obj.level1][obj.level2].push(obj.level3)
})
假设您只有 3 个级别。然后你会得到如下结构:
{
"1": {
"1.1": [
"1.1.1",
"1.1.2"
]
}
}
然后在模板中遍历:
<div *ngFor="let i of Object.keys(fa)">
{{i}}
<div *ngFor="let j of Object.keys(fa[i])">
{{j}}
<div *ngFor="let k of fa[i][j]">
{{k}}
</div>
</div>
</div>
不要忘记将 Object
变量绑定到您的模板,在您的组件中添加以下行:
Object = Object;
完整示例:
@Component({
selector: 'app',
template: `
<div *ngFor="let i of Object.keys(fa)">
{{i}}
<div *ngFor="let j of Object.keys(fa[i])">
{{j}}
<div *ngFor="let k of fa[i][j]">
{{k}}
</div>
</div>
</div>
`,
})
export class AppComponent {
array = [
{level1: "1", level2: "1.1", level3: "1.1.1"},
{level1: "1", level2: "1.1", level3: "1.1.2"},
{level1: "1", level2: "1.2", level3: "1.2.1"}
];
fa = {};
Object = Object;
constructor() {
this.array.forEach(obj => {
if (!this.fa[obj.level1]) this.fa[obj.level1] = {};
if (!this.fa[obj.level1][obj.level2]) this.fa[obj.level1][obj.level2] = [];
this.fa[obj.level1][obj.level2].push(obj.level3)
})
}
}