La grande force d'Angular, c'est qu'on peut utiliser toutes les méthodes de liaison en même temps sur un seul et même élément HTML ! Angular fusionnera intelligemment toutes les classes finales.
Regardez comment ces différentes syntaxes cohabitent parfaitement sur une seule balise <div> :
Un seul bouton va déclencher des modifications sur la condition simple [class.active]ET sur l'objet [ngClass] en même temps.
L'Ultime Développeur
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-user',
imports: [CommonModule],
template: `
<!-- L'attribut magique avec toutes les combinaisons ! -->
<div class="user-card"
[class]="baseClasses"
[class.active]="isActive"
[ngClass]="additionalClasses">
{{ user.name }}
</div>
<button (click)="toggleState()">Toggle State</button>
`
})
export class CombinationComponent {
user = { name: 'John Doe' };
// 1. Chaine de caractères classique
baseClasses = 'elevated';
// 2. Booléen simple pour [class.active]
isActive = false;
// 3. Objet complexe pour [ngClass]
additionalClasses = {
highlighted: false,
shadow: false
};
toggleState() {
// On inverse TOUT en même temps avec un seul clic !
this.isActive = !this.isActive;
this.additionalClasses['highlighted'] = !this.additionalClasses['highlighted'];
this.additionalClasses['shadow'] = !this.additionalClasses['shadow'];
}
}