NgClass没有选择正确的类

时间:2017-08-25 12:17:16

标签: angular ng-class

我有一个对象,它存储一个布尔值。 当我显示该对象的其他值时,我想根据该布尔值应用不同的样式。

我尝试了十几种组合:* ngClass,[(ngClass)],class.myNewClass ......

<td [ngClass]="(theBoolean ? 'classActivated' : 'classDeacticated' )">...</td>

<td [class.classActivated]="theBoolean" [class.classDeacticated]="!theBoolean" >...</td>

这两个都不起作用。我怎么能这样做?

修改 它们包含在一个tr中,它包含一个* ngFor,本身在一个表中,另一个* ngFor(因为我显示了一个对象表,其中包含一个属性也是一个表)。

EDIT2: 我从服务中获得了这些价值,这是一个Observable<myObject[]>。所有值都在页面中正确显示,以及我在网页上显示的用于调试的布尔值。

3 个答案:

答案 0 :(得分:4)

你的案件都应该有效。这是一个简单的plunkr示例。在提供的代码之外有些问题。尝试在Plunkr中重现您的错误或向我们展示整个组件。

答案 1 :(得分:1)

根据this的另一种工作语法:

<td [ngClass]="{'classActivated': theBoolean, 'classDeacticated': !theBoolean}">...</td>

答案 2 :(得分:0)

错误可能是省略了对象/数组元素名称。如果要对数组进行迭代(从服务获得或不获取)并且theBoolean是该数组/对象的属性,那么您应该在模板语法中指定它,如下所示:

<td [class.classActivated]="objectName.theBoolean" [class.classDeacticated]="!objectName.theBoolean" >...</td>

<td [ngClass]="{'classActivated': item.theBoolean, 'classDeacticated': !item.theBoolean}">...</td>

是objectName / item是theBoolean属性的持有者。