Introduction
Sometimes when working on an application, you might want to dynamically style an element depending on a certain condition. This can be done using either ngStyle
or ngClass
depending on your situation.
What is the difference between ngStyle
and ngClass
?
ngStyle
takes a Javascript object and transforms it into an attribute. ngClass
on the other hand transforms a Javascript object into a CSS class.
Using ngStyle
Suppose your component displays a list of users in a system. In the component class you have a string variable called userStatus
. You can use that variable as a conditional in your template to determine whether you should change the background colour depending on the status of the user. If the status of the user is “deleted”, we will make the background colour of the button red. Otherwise, it will be green. Here’s how to implement that in the template of your component using ngStyle
:
<p id="user-status" [ngStyle]="userStatus === 'deleted' ? 'background-color: red' : 'background-color: green'">{{userStatus}}</p>
Using ngClass
Let’s say we prefer to use badges to show whether a user is active or inactive. We can use ngClass
here to accomplish this task. Let’s assume this time that userStatus
is a boolean instead of a string. This is how it can be implemented in the template of your component using badges from Bootstrap:
<p [ngClass]="userStatus === 'Active' ? 'badge badge-success' : 'badge badge-danger'">{{userStatus}}</p>