跨度元素上的动态 css class - angular 4

dynamic css class on a span element - angular 4

我在 table 中有一个 span 元素。我想根据值动态更改 css class。

这是我的 html 代码:

    <table>
          <thead>
               <tr>
                  <th>Fruits</th>
                  <th>Colors</th>
               </tr>
          </thead>
          <tbody>
          <tr *ngFor="let data of fruits>
             <td>{{data.fruits}}</td>
             <td>
             <span class="badge badge-default badge-success">{{data.color}}</span>
             </td>
           </tr>
          </tbody>
</table>

我想根据获得的数据显示徽章颜色。例如,如果我变红了,我想将徽章 class 更改为徽章危险。如果我变绿了,我想将 class 更改为 badge-success 等等。

如何在 angular 4 中实现?

谢谢

<span class="badge badge-default badge-success" [ngStyle]="data.color =='red' ? {'class': 'badge badge-danger'} : {'class': 'badge badge-success'}"></span>

您可以使用 ngStyle 属性 和三元运算符,就像我提供的一样

<span class="badge badge-default" [ngClass]="{'badge-danger': data.color === 'red', 'badge-success': data.color === 'green' }></span>

您可以在 angular 中使用 ngClass 指令。参数为 'class-name':condition ,如果 condition 为真,则将 class-name 添加到元素。

在此处阅读有关 ngClass 的更多信息:https://angular.io/api/common/NgClass

试试这个方法

<span class="badge badge-default" [ngClass]="{
    'badge-success':data.color === 'green',
    'badge-warning':data.color === 'yellow',
    'badge-success-danger':data.color === 'red'
  }">
  </span>

1) 如果值来自对象中的枚举值怎么办 2) 有没有办法把所有的 ngClass 逻辑放在一个组件方法中,并做类似的事情:

<tbody>
    <tr *ngFor="let task of tasks">
        <td>{{ task.title }}</td>
        <td>{{ task.description }}</td>
        <td>
            <span class="label" [ngClass]="{ getTaskLabel(task) }" >task.taskstate</span>
        </td>
        <td>
    </tr>
</tbody>