Angular - 2.26-Produire des listes avec ngFor.
*ngFor est la directive structurelle qui permet de produire dynamiquement une liste d'éléments dans le template à partir d'un tableau (ou tout itérable) défini dans le composant TypeScript. C'est l'équivalent Angular d'une boucle for...of appliquée au DOM.
Sa syntaxe : *ngFor="let item of items". Angular crée alors un élément (et tout son sous-arbre) pour chaque élément du tableau items, en exposant la variable locale item dans la portée du template. On peut ensuite afficher la valeur courante avec une interpolation, ou la passer à un composant enfant via un property binding.
Exemple complet
- Côté TypeScript :
servers = ['Production', 'Staging', 'Dev']; - Côté template :
<div *ngFor="let server of servers">{{ server }}</div> - Résultat : trois
<div>sont produits, affichant chacun le nom d'un serveur.
On peut aussi récupérer l'index de l'itération courante avec la syntaxe let i = index : *ngFor="let server of servers; let i = index". La variable i est ensuite utilisable dans le template, par exemple pour styliser différemment les éléments pairs et impairs, ou pour afficher un numéro. D'autres variables locales sont disponibles : first, last, even, odd.
Attention à l'astérisque : comme *ngIf, *ngFor est une directive structurelle qui réécrit la balise en interne sous forme de <ng-template>. Si vous oubliez l'astérisque, Angular ne génère pas la liste et lève une erreur. Pour les très longues listes, pensez aussi à utiliser trackBy (vu plus tard) pour optimiser les performances : Angular peut alors réutiliser les éléments existants au lieu de tout recréer à chaque changement.