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.

Introduction à @let dans Angular 18.1 (11 juillet 2024)

La syntaxe des modèles d'Angular prend en charge des expressions JavaScript complexes, mais il n'y avait pas de moyen sans friction pour stocker le résultat d'une expression tout en étant capable de le réutiliser dans l'ensemble du modèle. Les développeurs ont dû recourir à des solutions non ergonomiques pour atteindre cet objectif avec des directives et d'autres solutions.

Voyons la nouvelle syntaxe dans les templates:

html
@let name = value; // où value est une expression Angular valide

Désormais, dans le modèle, une variable peut être définie et utilisée comme on pourrait s'y attendre selon les règles et conventions de la syntaxe des modèles Angular. Par exemple :

html
@let name = 'Frodo';
<h1>Tableau de bord pour {{name}}</h1>
Bonjour, {{name}}

Voici un autre exemple de comment @let peut être utilisé dans un modèle :

html
<!-- Utilisation avec une variable de modèle faisant référence à un élément -->
<input #name>

@let greeting = 'Bonjour ' + name.value;

<!-- Utilisation avec un pipe asynchrone -->
@let user = user$ | async;

Lors de l'utilisation des nouvelles déclarations @let, gardez à l'esprit qu'elles sont limitées à la vue actuelle et à ses descendants, mais ne peuvent pas être accessibles par les vues parentes ou sœurs.

typescript
@let topLevel = value;

@if (condition) {
  @let nested = value;
}

<div *ngIf="condition">
  @let nestedNgIf = value;
</div>
html
<!-- Valide -->
{{topLevel}}
<!-- Erreur, non accessible depuis @if -->

{{nested}}
<!-- Erreur, non accessible depuis *ngIf -->

{{nestedNgIf}}

Les déclarations @let sont en lecture seule et ne peuvent pas être réassignées. Leurs valeurs seront recalculées à chaque détection de changement (par exemple, si un pipe asynchrone change). Toute tentative de leur attribuer une valeur directement entraînera une erreur de vérification de type.

typescript
@let value = 10;

<!-- Erreur : `value` n'est pas assignable -->
<button (click)="value = value + 1">Changer la valeur</button>

Définition de la syntaxe

Explorons certains détails de la définition de la syntaxe pour la syntaxe @let. La définition formelle de la nouvelle syntaxe est :

  • Le mot-clé @let.
  • Suivi d'un ou plusieurs espaces, sans inclure les nouvelles lignes.
  • Suivi d'un nom JavaScript valide et de zéro ou plusieurs espaces.
  • Suivi du symbole = et de zéro ou plusieurs espaces.
  • Suivi d'une expression Angular qui peut être multi-lignes.
  • Terminé par le symbole ;.

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