【发布时间】:2018-01-29 09:46:24
【问题描述】:
这是一个简单的例子,实际问题更复杂。
cars: string[] = ['audi', 'opel', 'mazda'];
isAudi: boolean = false;
isOpel: boolean = false;
checkCar(car):void {
if(car == 'audi'){
this.isAudi = true;
}
}
<div *ngFor="let car of cars" (validationCheck)="checkCar(car)">
<p *ngIf="isAudi">Audi: {{car}}</p>
<p *ngIf="isOpel">Opel: {{car}}</p>
</div>
validationCheck 是为数组中的每个项目触发函数的指令。
这将输出:
Audi: audi
Audi: opel
Audi: mazda
我只想展示:
Audi: audi
*ngIf="car == 'audi'" 是不可能的,因为对象的真正复杂性。
附言。如果您想对一个问题投反对票,请给我一个很好的解释,为什么问题没有显示出研究成果或其不清楚或无用,谢谢
【问题讨论】:
-
你认为对象为什么复杂?
-
因为我需要做几个不同的条件来显示那个部分,例如
*ngIf="car && car.manufacturer && manufacturers.get(car.manufacturer.id).manufacturer.name == 'fiat'....... and so on"...这里有一大堆条件很难维护所以我想把它放在组件文件中 -
给每辆车添加一个布尔字段,比如
show怎么样? -
难道不能制作一个方法把你所有的复杂逻辑都写在一个地方并添加到模板
*ngIf="yourComplexMethod()"中吗?通过这种方法,您不需要将 (validationCheck) 与*ngFor一起使用 -
在每个变更检测周期都会调用该方法函数。我想避免这种情况。
标签: angular ngfor angular-ng-if