📢 Je vous présente le livre Angular

  • 1) Il offre un contenu clair et concis, tout en couvrant une multitude de concepts d'Angular.
  • 2) Le livre est structuré en trois niveaux : débutant, intermédiaire et avancé
  • 3) traite des pratiques les plus récentes d'Angular, comme les signaux, les vues différées, la gestion des flux, entre autres
  • 4) De plus, vous y trouverez plusieurs liens vers des exemples de code source pour approfondir vos connaissances en pratique.
Consulter un extrait

Skip to content

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 !