'Angular: change style depending on *ngIf condition
I'm aware that I can do something like this:
<ng-container *ngIf="user.age<18;else over">
<div class="some-section" style="background-color: red;">
[...]
</div>
</ng-container>
<ng-template #over>
<div class="some-section" style="background-color: blue;">
[...]
</div>
</ng-template>
Although this works, it is duplicate code. Is there a way to change only the style so that there's no duplicates (scss, other angular tools, ...)?
Solution 1:[1]
This is one way to do it check out this stackblitz
<div class="some-section" style="background-color: {{age < 18 ? 'red' : 'blue'}}">
Test
</div>
Solution 2:[2]
The simplest way to do that:
<div class="some-section"
[style.backgroundColor]="age > 18 ? 'red' : 'blue'">
[...]
</div>
Solution 3:[3]
Too change a style depending on a condition, you only have to use this:
[style.xxx]="expression"
Example:
<div class="some-section" [style.backgroundColor]="age < 18 ? 'red' : 'blue'">
Or via function, for more "complex" calculations without messing up HTML
<div class="some-section" [ngStyle]="calculateStyles()">
calculateStyles() {
if (user.age<18) {
return "background-color: red";
} else {
return "background-color: blue";
}
}
And then, the "better" way to manage your styles depending on conditions, using a class instead of just just "styles":
[ngClass]="expression"
Example:
<div class="some-section" [ngClass]="{'classACSS': user.age<18, 'classBCSS': user.age>=18}"
.classACSS {
background-color: red;
}
.classBCSS {
background-color: blue;
}
I leave you HERE the doc with a more detailed explanation of all of this.
Solution 4:[4]
<div class="some-section" [style.backgroundColor]="age < 18 ? 'red' : 'blue'">
Solution 5:[5]
<div class="some-section" *ngIf="user.age<18" style="background-color:red;">
[...]
</div>
<div class="some-section" *ngIf="user.age>18" style="backdrop-color:blue">
[...]
</div>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | alphapilgrim |
| Solution 2 | |
| Solution 3 | |
| Solution 4 | Eitzaz shah |
| Solution 5 | Robin Chauhan |
