3

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
  • 351
  • 3
  • 9
  • 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

5

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

Eli
  • 1,302
  • 1
  • 17
  • 21
2

You can do this:

<div [ngClass]="{'class1 class2' : condition, 'class3': !condition"}></div>
bpardo
  • 351
  • 3
  • 9
Mathieu Seiler
  • 677
  • 7
  • 12
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
  • 5,696
  • 1
  • 24
  • 41
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
  • 489
  • 4
  • 15