Angular 避免在角度模板中调用多个函数
我有以下代码Angular 避免在角度模板中调用多个函数,angular,typescript,Angular,Typescript,我有以下代码 <div *ngFor="let item of items"> <button [disabled]="doSomething(item)"></button> <input [someProperty]="doSomething(item)"></div> <div [ngClass]="{ 'cla
<div *ngFor="let item of items">
<button [disabled]="doSomething(item)"></button>
<input [someProperty]="doSomething(item)"></div>
<div [ngClass]="{
'class1': item.attr == 'val1' || doSomething(item),
'class2': row.attr != 'val2' && !doSomething(item)
}"
></div>
我觉得每次重新计算模板中每个项目的doSomething
值时都不是一个好做法
有更推荐的方法吗?有两种方法,其中一种是模板“hack”:
另一种方法是,在获取每个
项时,向每个对象添加一个属性,并读取该属性。如果有大量项,可以通过计算布尔逻辑来节省时间,然后将其保存在一个列表中,并在其中循环。考虑添加一个示例
doSomething(item) {
return someBooleanLogic(item);
}
<div *ngFor="let item of items">
<ng-container *ngIf="{ something: doSomething(item) } as data">
<button [disabled]="data.something"></button>
<input [someProperty]="data.something"></div>
<div [ngClass]="{
'class1': item.attr == 'val1' || data.something,
'class2': row.attr != 'val2' && !data.something
}"></div>
</ng-container>
</div>