Angular 6 将 active class 添加到来自另一个 ngFor 的 ngFor 元素
Angular 6 add active class to ngFor element from another ngFor
我在 html 中有两个 ngFor 循环。一种用于显示 header,另一种用于 body。两者都在同一个数组上迭代(比如 A)。
数组 A 是数组 B 的每一项的元素。示例:B[id:1, arrayA: A[]]。
数组 B 在单独的 ngFor 循环中迭代,对于 A 和 B 都是 parent。
我想在单击任何 header 时向数组 A 的每个元素的 header 和 body 添加活动 class。
这对于数组 A 的第一个元素工作正常。对于所有剩余的元素,这都不适用于 body。
尝试代码 - [class.active]="elementA.toggle" header 和 body 以及 header 点击 - (点击)="elementA.toggle = !elementA.toggle"
也尝试过 [ngClass]="elementA.toggle ? 'active' : ''"
只是在 header 而不是 body.
如果需要我可以分享代码。
在Component.ts中:
categories: [category_A, category_B] // Array B
category_A: any =
{ id: 2, name: "A", toggle: false, subCategories: [subCategory_A, subCategory_B] }
category_B: any =
{ id: 2, name: "B", toggle: false, subCategories: [subCategory_A] }
subCategory_A: any =
{ id: 2, name: "SubA", items: this.items_Bread, subCategoryToggle: false } // Array A
subCategory_B: any =
{ id: 2, name: "SubB", items: this.items_Bread, subCategoryToggle: false } // Array A
我的HTML:
<div *ngFor="let Category of model.categories">
<a data-toggle="collapse" href="#{{Category.name}}" (click)="Category.toggle = !Category.toggle;">{{Category.name}}</a>
<!-- Header Section-->
<div>
<div>
<a href="#subCategory.name" class="list-group-item" *ngFor="let subCategory of Category.subCategories; let index = index"
[class.active]="subCategory.subCategoryToggle" (click)="subCategory.subCategoryToggle = !subCategory.subCategoryToggle">
{{subCategory.name}}
</a>
</div>
</div>
<!-- Header Section-->
<!-- Body Section-->
<div [attr.id]="subCategory.name" *ngFor="let subCategory of Category.subCategories; let index = index"
[ngClass]="subCategory.subCategoryToggle ? 'active' : ''" >
<div>
<!-- Body Section-->
<div>
此代码适用于类别中的第一个元素,即 category_A。
但对于 category_B - Class 活动未在 Body 部分中设置。
<div *ngFor="let Category of model.categories">
<a data-toggle="collapse" href="#{{Category.name}}" (click)="Category.toggle = !Category.toggle;" [attr.id]="Category.name">{{Category.name}}</a>
<!-- Header Section-->
<div>
<div>
<a href="#subCategory.name" class="list-group-item" *ngFor="let subCategory of Category.subCategories; let index = index"
(click)="subCategory.subCategoryToggle = !subCategory.subCategoryToggle" data-toggle="collapse" aria-expanded="false" [attr.aria-controls]="subCategory.name">
{{subCategory.name}}
</a>
</div>
</div>
<!-- Header Section-->
<!-- Body Section-->
<div [attr.id]="subCategory.name" *ngFor="let subCategory of Category.subCategories; let index = index"
[ngClass]="subCategory.subCategoryToggle ? 'active' : ''" [attr.data-parent]="'#' + Category.name">
<div>
<!-- Body Section-->
我的修复..
我在 html 中有两个 ngFor 循环。一种用于显示 header,另一种用于 body。两者都在同一个数组上迭代(比如 A)。 数组 A 是数组 B 的每一项的元素。示例:B[id:1, arrayA: A[]]。 数组 B 在单独的 ngFor 循环中迭代,对于 A 和 B 都是 parent。
我想在单击任何 header 时向数组 A 的每个元素的 header 和 body 添加活动 class。 这对于数组 A 的第一个元素工作正常。对于所有剩余的元素,这都不适用于 body。
尝试代码 - [class.active]="elementA.toggle" header 和 body 以及 header 点击 - (点击)="elementA.toggle = !elementA.toggle"
也尝试过 [ngClass]="elementA.toggle ? 'active' : ''" 只是在 header 而不是 body.
如果需要我可以分享代码。
在Component.ts中:
categories: [category_A, category_B] // Array B
category_A: any =
{ id: 2, name: "A", toggle: false, subCategories: [subCategory_A, subCategory_B] }
category_B: any =
{ id: 2, name: "B", toggle: false, subCategories: [subCategory_A] }
subCategory_A: any =
{ id: 2, name: "SubA", items: this.items_Bread, subCategoryToggle: false } // Array A
subCategory_B: any =
{ id: 2, name: "SubB", items: this.items_Bread, subCategoryToggle: false } // Array A
我的HTML:
<div *ngFor="let Category of model.categories">
<a data-toggle="collapse" href="#{{Category.name}}" (click)="Category.toggle = !Category.toggle;">{{Category.name}}</a>
<!-- Header Section-->
<div>
<div>
<a href="#subCategory.name" class="list-group-item" *ngFor="let subCategory of Category.subCategories; let index = index"
[class.active]="subCategory.subCategoryToggle" (click)="subCategory.subCategoryToggle = !subCategory.subCategoryToggle">
{{subCategory.name}}
</a>
</div>
</div>
<!-- Header Section-->
<!-- Body Section-->
<div [attr.id]="subCategory.name" *ngFor="let subCategory of Category.subCategories; let index = index"
[ngClass]="subCategory.subCategoryToggle ? 'active' : ''" >
<div>
<!-- Body Section-->
<div>
此代码适用于类别中的第一个元素,即 category_A。 但对于 category_B - Class 活动未在 Body 部分中设置。
<div *ngFor="let Category of model.categories">
<a data-toggle="collapse" href="#{{Category.name}}" (click)="Category.toggle = !Category.toggle;" [attr.id]="Category.name">{{Category.name}}</a>
<!-- Header Section-->
<div>
<div>
<a href="#subCategory.name" class="list-group-item" *ngFor="let subCategory of Category.subCategories; let index = index"
(click)="subCategory.subCategoryToggle = !subCategory.subCategoryToggle" data-toggle="collapse" aria-expanded="false" [attr.aria-controls]="subCategory.name">
{{subCategory.name}}
</a>
</div>
</div>
<!-- Header Section-->
<!-- Body Section-->
<div [attr.id]="subCategory.name" *ngFor="let subCategory of Category.subCategories; let index = index"
[ngClass]="subCategory.subCategoryToggle ? 'active' : ''" [attr.data-parent]="'#' + Category.name">
<div>
<!-- Body Section-->
我的修复..