Angular - NgClass,多个条件

Angular - NgClass, multiple conditions

我正在遍历一个包含不同数量百分比的数组。但是,我想根据数据库中的答案是否等于数组中的值之一来添加 classes。

下面的示例循环遍历数组中的值。我想做的是说,'如果答案是'0',应用名称为 'red' 的 class,如果不是,则添加 [=24= 的 class ].如果答案恰好是“20”,则添加一个 class 名称 'amber'。如果没有,'transparent'.

我尝试的多种变体似乎都碰壁了。

<div *ngFor="let percent of percentages" 
     [ngClass]="{
         (answer =='0') ? 'red':'transparent',
         (answer =='20') ? 'amber':'transparent',         
     }">
     {{ percent }}
</div>

编辑 - 澄清 我想做的是简化下面的内容。这是将每个百分比写成它自己的 div。我试图做的是获得相同的结果,但是通过循环遍历百分比数组来代替。

<div [ngClass]="answer==='0' ? 'red' : 'bg-transparent'"> 0% </div>

<div [ngClass]="answer==='25' ? 'amber' : 'bg-transparent'"> 25% </div>

<div [ngClass]="answer==='50' ? 'orange' : 'transparent'"> 50% </div>

将其他条件放在else选项部分demo

 <div *ngFor="let percent of percentages" 
         [ngClass]="(answer =='0') ? 'red': (answer =='20') ? 'amber':'transparent ">
         {{ percent }}
    </div>

您可以使用 Ternery 运算符

<div *ngFor="let percent of percentages"
 [ngClass]="{ answer == '0' ? 'red' : answer == '20' ? 'amber' : 'transparent'}">
 {{ percent }}
</div>

如何将条件移动到组件而不是模板中?

像这样

// template
<div *ngFor="let percent of percentages" 
     [ngClass]="foo(answer)">
     {{ percent }}
</div>


foo(answer) {
   if(answer === '0') {
      return 'red';
   }
   if (answer =='20' ) { 
      return 'amber'
   }    

// add more condition here or use a switch statement above.
    return 'transparent';
}

ngClass 的语法是 {'class1':condition1,'class2':condition2...} 所以我认为这更明确

<div class="transparent" [ngClass]="{'red':answer == '0',
                                     'amber':answer == '20',
                                     'orange':answer==50}">