Angular 2 通过 [class.className] 绑定添加多个类

Posted

技术标签:

【中文标题】Angular 2 通过 [class.className] 绑定添加多个类【英文标题】:Angular 2 add multiple classes via [class.className] binding 【发布时间】:2017-08-28 01:43:51 【问题描述】:

虽然添加单个类以这种方式效果很好 -

[class.loading-state]="loading"

但是如何添加多个类 例如,如果 loadingtrue 添加类 - "loading-state" & "my-class"

我如何通过[class] binding完成它

【问题讨论】:

【参考方案1】:

您可以通过简单地使用ngClass 来做到这一点:

这里的第一、第二和第三是类的名称。

你可以直接把你的条件放在那里而不是 true/false

 <div [ngClass]="'first': true, 'second': true, 'third': false">...</div>

你的情况

 <div [ngClass]="'loading-state': loading, 'my-class': loading ">...</div>

或者更短的版本(正如@matko.kvesic 评论的那样)

<div [ngClass]="'loading-state my-class': loading">...</div>

【讨论】:

甚至:[ngClass]="'loading-state my-class': loading" 使用 Angular 7(及更高版本)进行测试,您现在可以使用 [class],因为您可以将 [ngClass] 用于多个类,例如[class]="['my-first-class', 'my-second-class']"

标签stackblitz.com/edit/angular-playground-inhqyx?file=app/…

的简单示例见下文【参考方案2】:

虽然Vivek Doshi 的答案是完全正确的,但下面我提出了其他替代方法来对不同的布尔变量做同样的事情:

第一种解决方案:[class.className]

模板:

<div [class.first-class]="addFirst" [class.second-class]="addSecond">...</div>

组件:

export class MyComponent 
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...

第二个解决方案:[ngClass] 与方法绑定

模板:

<div [ngClass]="setClasses()">...</div>

组件:

export class MyComponent 
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...
  setClasses() 
    return 
      'first-class': this.addFirst,
      'second-class': this.addSecond
    ;
  
  ...

最后的解决方案,但并非最不重要:

模板:

<div [ngClass]="'first-class': addFirst, 'second-class': addSecond">...</div>

组件:

export class MyComponent 
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...

【讨论】:

以上是关于Angular 2 通过 [class.className] 绑定添加多个类的主要内容,如果未能解决你的问题,请参考以下文章

java——如何通过class调用该类的方法并获得返回值?(反射)

ngClass 不工作?

Selenium----Xpath定位

css里面多层class选择好不好?

ES6 class -- Class 的方法

.attr('class')返回多个类名,如何选择我想要使用的名称?