Angular 17 – Utilisation de la nouvelle syntaxe de blocs pour le contrôle de flux

#Angular#développement#front-end

Angular

La version 17 du framework Angular a vu l’ajout d’une nouvelle syntaxe du contrôle de flux visant à améliorer l’écriture des templates des composants Angular.

Cette nouveauté a plusieurs avantages :

  • Code des templates simplifiés et mieux lisibles
  • Meilleur contrôle des types des variables utilisés
  • Meilleures performances lors du rendu des composants
  • Elle permet de s’affranchir d’importer les différentes directives nécessaires pour les utiliser dans nos composants. En effet cette nouvelle syntaxe est nativement intégrée au moteur de template

 

Tour d’horizon rapide des nouveaux blocs

Bloc if – then – else

Il fallait jusqu’à la version 16 du framework utiliser la directive *ngIf pour afficher de manière conditionnelle certains blocs :

Depuis Angular 17 il est désormais possible d’utiliser la syntaxe simplifiée suivante :

Encore mieux, il est désormais possible d’utiliser la condition else if, ce qui n’était jusqu’ici pas possible en utilisant la directive *ngIf :

Bloc for

La directive *ngFor permettant d’itérer sur une liste d’éléments s’utilise de la manière suivante :

La version Angular 17 s’écrit désormais via la syntaxe suivante :

Nouveauté également pour le bloc for, il est désormais possible d’utiliser le bloc @empty afin d’afficher un contenu spécifique lorsque la collection ne comporte aucun élément :

Bloc switch – case

Commençons par rappeler la syntaxe que nous devions utiliser jusqu’à l’arrivée d’Angular 17 :

La nouvelle syntaxe s’écrit de la manière suivante :

Le bloc @default est ici optionnel, si aucun bloc @case ne répond à la condition, le template n’affichera aucun contenu.

Utilisation du pipe async

Les développeurs Angular le savent, il faut absolument éviter de souscrire manuellement à des observables via le code de leur composants (principalement pour laisser le framework gérer le désabonnement automatiquement via le cycle de vie des composants et ne pas causer de fuites).

La solution jusqu’à Angular 16 était d’utiliser le pipe async en combinaison d’une des directives dans le template du composant.

Par exemple ici un *ngIf :

La nouvelle syntaxe introduite par Angular 17 est la suivante :

Migration simplifiée

Angular CLI propose une solution rapide pour migrer l’ensemble des directives *ngIf *ngFor et *ngSwitch :