4

Is it possible to add multiple classes with [ng-class] with a single condition?

Something like this:

<div [ngClass]="Cond ? 'class1, class2' : 'class3, class4'"></div>
bpardo
  • 401
  • 5
  • 11
  • 1
    Does this answer your question? [Multiple conditions in ngClass - Angular 4](https://stackoverflow.com/questions/44821875/multiple-conditions-in-ngclass-angular-4) – Daniel Habenicht Dec 01 '20 at 12:09
  • @DanielHabenicht No, I want a single condition only. Thanks – bpardo Dec 01 '20 at 12:13

4 Answers4

6

As specified in: https://angular.io/api/common/NgClass#description You can: <some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element>

Eli
  • 1,670
  • 1
  • 20
  • 23
2

You can do this:

<div [ngClass]="{'class1 class2' : condition, 'class3': !condition"}></div>
bpardo
  • 401
  • 5
  • 11
Mathieu Seiler
  • 726
  • 8
  • 13
1

You have it almost right, just ditch the commas:

<div [ngClass]="Cond ? 'class1 class2' : 'class3 class4'"></div>

Try it on stackblitz.com - I wrote an example.

enter image description here

kvetis
  • 6,682
  • 1
  • 28
  • 48
0

It is very easy. Steps

  1. Create a boolean for controlling the class binding condition

public hasError: boolean = false;

  1. Create an object with class names as follows
public classObj: any = {
    "classA": !this.hasError,
    "classB": this.hasError,
    "classC": !this.hasError,
    // how much ever class you want
}
  1. Finally use ngClass directive for binding the classObj

<h2 [ngClass]="classObj">Hey, I have a lot of classes!</h2>

Srinath Kamath
  • 542
  • 1
  • 6
  • 17