Angular 2 Doing an else with ngClass

Scipion picture Scipion · Jul 5, 2016 · Viewed 47.9k times · Source

I have the following template :

<p [ngClass]="{checked: condition, unchecked: !condition}">

While this is working, I find it a bit ugly as I have to repeat twice the condition. Is there a way to something like : [ngClass]={condition ? checked : unchecked} (which is not working)

Thanks

Answer

Ankit Singh picture Ankit Singh · Jul 5, 2016

Indeed

<p class="{{condition ? 'checked' : 'unchecked'}}">

or

<p [ngClass]="condition ? 'checked' : 'unchecked'">

or

<p [ngClass]="[condition ? 'checked' : 'unchecked']">

Angular 9 Update

But you should know that there's a difference in how different types of class bindings behave, especially when there are multiple types of class bindings on the same element.

And the new compiler, Ivy, brings more clarity and predictability to it. Read More about it here