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

Aje*_*jey 37 javascript binding angular

虽然添加单个类以这种方式运行良好 -

[class.loading-state]="loading"

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

我如何通过 [class] binding

Viv*_*shi 63

您只需使用ngClass以下命令即可:

这里的第一个,第二个和第三个是类的名称.

而不是真/假,你可以直接把你的条件放在那里

 <div [ngClass]="{'first': true, 'second': true, 'third': false}">...</div>
Run Code Online (Sandbox Code Playgroud)

在你的情况下

 <div [ngClass]="{'loading-state': loading, 'my-class': loading }">...</div>
Run Code Online (Sandbox Code Playgroud)

或更短的Veriosn(如@ matko.kvesic所评论)

<div [ngClass]="{'loading-state my-class': loading}">...</div>
Run Code Online (Sandbox Code Playgroud)

  • 甚至:[ngClass] ="{'loading-state my-class':loading}" (15认同)

Ala*_*ros 5

尽管Vivek Doshi 的回答是完全正确的,但我在下面提出了其他替代方案,以对不同的布尔变量执行相同的操作:

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

模板:

<div [class.first-class]="addFirst" [class.second-class]="addSecond">...</div>
Run Code Online (Sandbox Code Playgroud)

成分:

export class MyComponent {
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

模板:

<div [ngClass]="setClasses()">...</div>
Run Code Online (Sandbox Code Playgroud)

成分:

export class MyComponent {
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...
  setClasses() {
    return {
      'first-class': this.addFirst,
      'second-class': this.addSecond
    };
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

模板:

<div [ngClass]="{'first-class': addFirst, 'second-class': addSecond}">...</div>
Run Code Online (Sandbox Code Playgroud)

成分:

export class MyComponent {
  ...
  addFirst: boolean;
  addSecond: boolean;
  ...
}
Run Code Online (Sandbox Code Playgroud)