把你:什么我试图避免
<div *ngFor="let item of items; let i = index; let value = getValue(item)" [ngClass]="{'alert':!value}">
<div *ngIf="!value">
alert
</div>
{{item}}
</div>
例子转换为map
函数,并返回每个项目的适当值。
function valueize(items: any[]): any[] {
return items.map(item => {
name: item.name,
description: item.description,
// etc...
};
}
<div *ngFor="let item of valueize(items); let i = index;" [ngClass]="{'alert':!item}">
<div *ngIf="!item">
alert
</div>
{{item}}
</div>
您可能希望*ngFor
之前,要做到这一点,即使是所谓的,所以你可以做*ngFor="let item of items"
其中items
每个item
已经是正确的值。例如,您可以在构造函数或ngOnInit
中执行此操作。
编辑:
正如ChrisG提到的,你可以让这个清洁剂,如果你已经这样做有你的getValue
功能如下:
<div *ngFor="let item of items.map(getValue); let i = index;" [ngClass]="{'alert':!item}">
<div *ngIf="!item">
alert
</div>
{{item}}
</div>
这样你就不必创建全新的映射功能,您只需内联映射并为每个项目调用适配器功能,从而为每个item
赋予合适的值。
你可以包含你的'getValue'函数吗? – jhhoff02