Angular 2 ngClass 以数据为条件?

Posted

技术标签:

【中文标题】Angular 2 ngClass 以数据为条件?【英文标题】:Angular 2 ngClass conditional with data? 【发布时间】:2018-06-11 17:40:34 【问题描述】:

因此,如果已经选择了一个对象,我基本上会尝试设置一个突出显示。如何比较对象以更改类?像这样的

<[ngClass]="perkResult.perk === perk.perk ? 'highlight' : 'none-hightlight' ">

当前代码:

<div class="col-xs-12">
  <div class="col-xs-12 benefit-selection">
     <ul class="benefits-dropdown-ul" *ngIf="perkList"> .     
      <a class="benefits-dropdown-div" *ngFor="let perkResult of perkList.results" (click)="onAddPerk(perkResult)">
       //highlight here
        <li class="benefits-dropdown-li"> perkResult.perk </li>
      </a>
     </ul>
  </div>
 </div>

 <div class="col-xs-6 benefit-selected" *ngFor="let perk of company.perks; trackBy: customTrackBy; let i = inde
     perk.perk 
 </div>

【问题讨论】:

【参考方案1】:

您不需要插值括号。在这种情况下,[ngClass] 正在寻找一个表达式,所以

[ngClass]="perkResult.perk === perk.perk ? 'highlight' : 'none-hightlight'"

[ngClass]="[perkResult.perk === perk.perk ? 'highlight' : 'none-hightlight']"

会起作用的。

【讨论】:

很好用。但是我有 2 个 for 循环,并且 perk.perk 不会在我想要放置它的位置注册。如何参考? @Kenzo 所以perkperkResult 在不同的范围内。我建议将perk.perk 存储在另一个变量中。 (比如说当某物被选中时)。然后你可以比较perkResult.perk === newVar【参考方案2】:

您希望 中的整个表达式计算为您想要的类字符串

[ngClass]="perkResult.perk === perk.perk ? 'highlight' : 'none-hightlight'"

【讨论】:

这个解决方案会产生编译错误,因为你不能同时使用[]方括号运算符和插值运算符。一个有效的解决方案在这里:***.com/questions/35269179/…

以上是关于Angular 2 ngClass 以数据为条件?的主要内容,如果未能解决你的问题,请参考以下文章

Angular ngClass 多个三元运算符条件

Angular:ngClass 属性中的条件始终被视为真

我可以在 [ngClass] 中使用条件(三元)运算符以及 Angular2 中的多个类条件吗?

如何在 Angular 2+ 中使用多个有条件的类

我可以在条件 [ngCLASS] 下编写 CSS 类吗

ngClass 不工作?