ngFor 内的 angular2 切换图标
angular2 toggle icons inside ngFor
有人可以告诉我如何在执行 ngFor 时切换图标吗?
问题陈述:
我正在使用 *ngFor 遍历数组并显示类别名称。在某天单击时,我需要打开手风琴并显示类别详细信息(我可以这样做)。
手风琴打开后,我需要用 fa-minus 替换 fa-plus 图标,反之亦然,我只需要在点击的那一天执行此操作。
我怎样才能有效地做到这一点?
this.categoryList = [
{type: 'space', name: 'Space'},
{type: 'energy', name: 'Energy'},
{type: 'comfort', name: 'Comfort'},
{type: 'maintenance', name: 'Maintenance'},
{type: 'reporting', name: 'Reporting'}
];
HTML
<div class="{{category.type}}" *ngFor="let category of categoryList">
<div data-toggle="collapse" [attr.href]="'#'+'category-'+category.type">
<div class="title {{category.name}}">{{category.name}}</div>
<div>
<i class="fa fa-plus"></i> //needs to toggle between plus and minus
<i class="fa fa-minus"></i> //needs to toggle between plus and minus
</div>
</div>
<div class="collapse" id="category-{{category.type}}">
//details
</div>
</div>
1) 您将需要一个变量来存储当前选择的日期。
public SelectedDay:string = null;
2) 然后点击,设置选定的日期,
<div (click)="SelectedDay=day">{{day}}</div>
3) 使用 *ngIf
或 hidden
检查所选日期是否与循环中的同一天
<i class="fa fa-plus" *ngIf="SelectedDay!=day" aria-hidden="true"></i>
<i class="fa fa-minus" *ngIf="SelectedDay==day" aria-hidden="true"></i>
你的最终 HTML 应该是这样的 -
<div *ngFor="let day of daysInAWeek">
<div (click)="SelectedDay=day">{{day}}</div>
<div>
<i class="fa fa-plus" *ngIf="SelectedDay!=day" aria-hidden="true"></i>
<i class="fa fa-minus" *ngIf="SelectedDay==day" aria-hidden="true"></i>
</div>
<div class="details">Today is {{day}}</div>
</div>
这应该有效。
如果我没理解错的话,页面上可以只有一个 <i>
而不是两个:
模板:
<div *ngFor="let day of daysInAWeek; let i = index">
<div>{{day}}</div>
<div>
<i class="fa" [ngClass]="toggle[i] ? 'fa-plus': 'fa-minus'" aria-hidden="true"></i>
</div>
<div class="details">Today is {{day}}</div>
<button (click)="toggle[i] = !toggle[i]">Toggle</button>
</div>
ts:
daysInAWeek: string[] = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
toggle = {};
因此您可以切换该元素上的 类 为 fa-plus
或 fa-minus
您可以将 (click)="toggle[i] = !toggle[i]
放在 *ngFor
模板中的任何 html 元素上,这样它会在点击相关 <i>
元素时触发切换。
有人可以告诉我如何在执行 ngFor 时切换图标吗?
问题陈述: 我正在使用 *ngFor 遍历数组并显示类别名称。在某天单击时,我需要打开手风琴并显示类别详细信息(我可以这样做)。 手风琴打开后,我需要用 fa-minus 替换 fa-plus 图标,反之亦然,我只需要在点击的那一天执行此操作。
我怎样才能有效地做到这一点?
this.categoryList = [
{type: 'space', name: 'Space'},
{type: 'energy', name: 'Energy'},
{type: 'comfort', name: 'Comfort'},
{type: 'maintenance', name: 'Maintenance'},
{type: 'reporting', name: 'Reporting'}
];
HTML
<div class="{{category.type}}" *ngFor="let category of categoryList">
<div data-toggle="collapse" [attr.href]="'#'+'category-'+category.type">
<div class="title {{category.name}}">{{category.name}}</div>
<div>
<i class="fa fa-plus"></i> //needs to toggle between plus and minus
<i class="fa fa-minus"></i> //needs to toggle between plus and minus
</div>
</div>
<div class="collapse" id="category-{{category.type}}">
//details
</div>
</div>
1) 您将需要一个变量来存储当前选择的日期。
public SelectedDay:string = null;
2) 然后点击,设置选定的日期,
<div (click)="SelectedDay=day">{{day}}</div>
3) 使用 *ngIf
或 hidden
<i class="fa fa-plus" *ngIf="SelectedDay!=day" aria-hidden="true"></i>
<i class="fa fa-minus" *ngIf="SelectedDay==day" aria-hidden="true"></i>
你的最终 HTML 应该是这样的 -
<div *ngFor="let day of daysInAWeek">
<div (click)="SelectedDay=day">{{day}}</div>
<div>
<i class="fa fa-plus" *ngIf="SelectedDay!=day" aria-hidden="true"></i>
<i class="fa fa-minus" *ngIf="SelectedDay==day" aria-hidden="true"></i>
</div>
<div class="details">Today is {{day}}</div>
</div>
这应该有效。
如果我没理解错的话,页面上可以只有一个 <i>
而不是两个:
模板:
<div *ngFor="let day of daysInAWeek; let i = index">
<div>{{day}}</div>
<div>
<i class="fa" [ngClass]="toggle[i] ? 'fa-plus': 'fa-minus'" aria-hidden="true"></i>
</div>
<div class="details">Today is {{day}}</div>
<button (click)="toggle[i] = !toggle[i]">Toggle</button>
</div>
ts:
daysInAWeek: string[] = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
toggle = {};
因此您可以切换该元素上的 类 为 fa-plus
或 fa-minus
您可以将 (click)="toggle[i] = !toggle[i]
放在 *ngFor
模板中的任何 html 元素上,这样它会在点击相关 <i>
元素时触发切换。