CHAPITRE 9 : LES DIRECTIVES : NGIF, NGFOR, NGCLASS
Les directives ajoutent du comportement au HTML : afficher sous condition,
répéter un élément, changer une classe. Ce sont les outils que vous utiliserez le plus souvent.
1. Deux familles
Les directives structurelles modifient la structure du DOM : elles ajoutent
ou retirent des éléments. Elles s'écrivent avec une étoile : *ngIf,
*ngFor.
Les directives d'attribut modifient l'apparence d'un élément existant :
ngClass, ngStyle.
<div *ngIf="etudiants.length > 0; else aucunEtudiant">
<p>{{ etudiants.length }} etudiant(s) inscrit(s).</p>
</div>
<ng-template #aucunEtudiant>
<p>Aucun etudiant pour le moment.</p>
</ng-template>
Point important :*ngIfsupprime l'élément du DOM, il ne
le masque pas. Si vous voulez seulement le cacher tout en le conservant, utilisez
[hidden] ou le CSS.
<li *ngFor="let e of etudiants; let i = index; let premier = first">
{{ i + 1 }}. {{ e.nom }}
<span *ngIf="premier">(major)</span>
</li>
Disponibles : index, first, last, even,
odd.
trackBy : pour les longues listes
<li *ngFor="let e of etudiants; trackBy: suivreParId">{{ e.nom }}</li>
suivreParId(index: number, etudiant: any): number {
return etudiant.id;
}
Sans trackBy, Angular reconstruit toute la liste au moindre changement. Avec, il ne
touche que ce qui a bougé. Inutile sur dix éléments, précieux sur mille.