Les nouveautés d'Angular 19 en 4 minutes

Angular 19 vient de sortir, et il y a beaucoup de nouveautés intéressantes : hydratation incrémentale, linkedSignal, l'API des ressources, et plein d'autres choses. Venez découvrir tout ça en moins de 4 minutes !

Skip to content

Vous souhaitez recevoir de l'aide sur ce sujet ? rejoignez la communauté Angular.fr sur Discord.

Maîtriser @for dans les templates Angular

@for est un nouveau contrôle de flux introduit dans Angular pour remplacer la directive *ngFor. Cette nouvelle syntaxe offre une approche plus intuitive pour itérer sur des collections dans vos templates. Explorons ensemble comment utiliser @for pour améliorer la lisibilité et l'efficacité de vos boucles dans Angular.

Compatibilité

@for est une syntaxe introduite dans Angular 17. Si vous utilisez une version antérieure, vous pouvez utiliser *ngFor comme d'habitude.

Migration

Si vous souhaitez migrer des syntaxes, utilisez la commande:

bash
ng g @angular/core:control-flow-migration

Exemple de base

typescript
import { Component } from '@angular/core';
import { User } from './user';

@Component({
  selector: 'app-users',
  standalone: true,
  template: `
    <h2>Liste des utilisateurs</h2>
    @for (user of users; track user.id) {
      <div>
        {{ user.name }} ({{ user.email }})
      </div>
    }
    @empty {
      <p>Aucun utilisateur trouvé</p>
    }
  `
})
export class UsersComponent {
  users: User[] = [
    { id: 1, name: 'Alice', username: 'alice123', email: '[email protected]' },
    { id: 2, name: 'Bob', username: 'bob456', email: '[email protected]' },
    { id: 3, name: 'Charlie', username: 'charlie789', email: '[email protected]' }
  ];
}
ts
export interface User {
    id: number;
    name: string;
    username?: string;
    email: string;
    address?: {
        street: string;
        suite: string;
        city: string;
        zipcode: string;
        geo: {
            lat: string;
            lng: string;
        }
    };
    phone?: string;
    website?: string;
    company?: {
        name: string;
        catchPhrase: string;
        bs: string;
    };
}

Syntaxe générale

Le bloc @for est utilisé pour itérer sur des collections, comme des listes ou des tableaux. La syntaxe générale ressemble à cela :

angular-html
@for (variable of collection; track ...;) {
  // Votre code ici
}
  • variable : représente l'élément courant de la collection lors de l'itération.
  • collection : la collection sur laquelle vous voulez itérer.
  • track: indique à Angular comment suivre les éléments de la collection. Cela permet à Angular de mettre à jour correctement les éléments de la liste lorsqu'ils changent.

Comprendre track

track est une expression qui prend un argument et retourne une valeur unique pour chaque élément de la collection. Cela permet à Angular de suivre les éléments de manière efficace. Si on n'avait pas track, Angular devrait comparer chaque élément de la collection pour détecter les changements, ce qui serait inefficace. Ici, si vous avez une liste d'utilisateurs, vous pouvez utiliser user.id comme argument pour track pour suivre chaque utilisateur par son identifiant unique. Dans le cas où vous n'avez pas de valeur unique, vous pouvez utiliser $index pour suivre les éléments par leur index dans la collection.

La liste est vide avec @empty

@empty est utilisé pour afficher un contenu alternatif si la collection est vide. L'utilisation est la suivante :

angular-html
@for (user of users; track user.id) {
    // Votre code ici
}
@empty {
  <p>Aucun utilisateur trouvé</p>
}

Utiliser des variables dans le bloc @for

Vous pouvez également utiliser des variables dans le bloc @for pour suivre l'index de l'élément courant, comme ceci :

angular-html
@for (user of users; track user.id) {
    <p>{{user.name}} - {{$index}}</p>
}

Toutes les variables particulières commencent par $ et sont réservées pour les blocs @for. Voici d'autres exemples de variables spéciales :

  • $index : l'index de l'élément courant dans la collection.
  • $first : true si l'élément courant est le premier de la collection.
  • $last : true si l'élément courant est le dernier de la collection.
  • $even : true si l'index de l'élément courant est pair.
  • $odd : true si l'index de l'élément courant est impair.
  • $count : le nombre total d'éléments dans la collection.

Variables Locales

On peut aussi créer ses variables locales dans le bloc @for avec let:

angular-html
@for (user of users; track user.id ; let i = $index) {
  <p>{{ i }}</p>
}

Chaque mois, recevez en avant-première notre newsletter avec les dernières actualités, tutoriels, astuces et ressources Angular directement par email !