Angular 19 : toutes les nouveautés

🏷️ Front-end 📅 12/04/2026 17:00:00 👤 Mezgani said
Angular Angular 19 Nouveautes Template Cli
Angular 19 : toutes les nouveautés

Vue d'ensemble complète d'Angular 19 : variables de template @let, route render mode, HMR des styles, signal-based forms, standalone par défaut et améliorations CLI.

Résumé des changements Angular 19

Angular 19 consolide l'écosystème des signaux et améliore drastiquement la Developer Experience. Le focus est sur la flexibilité du rendu, la productivité et la finalisation des APIs expérimentales.

À retenir : Angular 19 = nouvelles syntaxes de template + rendu hybride flexible + HMR natif. Idéal pour les apps SSR complexes.

Highlights Angular 19 :

  • @let : variables locales dans les templates
  • Route render mode : SSR / SSG / CSR par route
  • HMR des styles : mise à jour CSS sans rechargement
  • linkedSignal() et resource() : APIs stables
  • Hydration incrémentale : chargement progressif des composants
  • Effect cleanup : nettoyage propre des effets
  • Standalone par défaut dans tous les schematics CLI

Variable de template @let

@let permet de déclarer des variables locales directement dans le template HTML, sans avoir à créer des propriétés intermédiaires dans le composant.

Avant (Angular 18 et avant) :

// Composant
get fullName() { return `${this.user?.firstName} ${this.user?.lastName}`; }

// Template
<p>{{ fullName }}</p>

Après (Angular 19 avec @let) :

@let user = currentUser();
@let fullName = user.firstName + ' ' + user.lastName;

@if (user) {
  <h2>{{ fullName }}</h2>
  <p>{{ user.email }}</p>
}
Scope : Une variable @let est scoped au bloc où elle est déclarée. Elle n'est pas accessible en dehors du @if ou @for parent.

Route render mode (SSR/SSG/CSR par route)

Angular 19 permet de définir un mode de rendu différent pour chaque route. Plus besoin de choisir entre "tout SSR" ou "tout CSR".

import { RenderMode, ServerRoute } from '@angular/ssr';

export const serverRoutes: ServerRoute[] = [
  {
    path: '',
    renderMode: RenderMode.Prerender  // SSG : généré à la build
  },
  {
    path: 'blog/:slug',
    renderMode: RenderMode.Server     // SSR : rendu à chaque requête
  },
  {
    path: 'dashboard',
    renderMode: RenderMode.Client     // CSR : rendu côté client uniquement
  }
];
À retenir : SSG pour le contenu statique (SEO maximal), SSR pour le contenu dynamique, CSR pour les pages authentifiées. Combinés, ces modes optimisent à la fois les performances et le SEO.

HMR des styles sans rechargement

Angular 19 améliore le Hot Module Replacement : les modifications de styles CSS/SCSS sont appliquées instantanément sans rechargement de page. L'état de l'application est préservé.

# HMR des styles activé par défaut en ng serve
ng serve

# Pour désactiver
ng serve --no-hmr
  • Styles globaux (styles.scss) : mis à jour sans rechargement
  • Styles de composants : mis à jour sans rechargement
  • Templates HTML : rechargement complet (pas encore HMR)

Effect cleanup et afterRenderEffect

Angular 19 introduit deux améliorations majeures pour la gestion des effets.

1. Effect cleanup : une fonction de nettoyage exécutée avant chaque ré-exécution de l'effet ou à la destruction du composant.

effect((onCleanup) => {
  const ws = new WebSocket(this.url());

  onCleanup(() => ws.close()); // appelé avant la prochaine exécution
});

2. afterRenderEffect() : un effet qui s'exécute après chaque rendu, uniquement côté client. Parfait pour les mesures DOM ou les animations.

import { afterRenderEffect } from '@angular/core';

export class ChartComponent {
  constructor() {
    afterRenderEffect(() => {
      // Accès sûr au DOM après le rendu
      this.drawChart();
    });
  }
}

Standalone par défaut dans le CLI

À partir d'Angular 19, tous les schematics CLI génèrent du code standalone par défaut.

# Nouveau projet : pas de AppModule
ng new my-app

# Composant standalone automatiquement
ng generate component header
# → standalone: true sans option supplémentaire

# Directive standalone
ng generate directive highlight

# Pipe standalone
ng generate pipe truncate
Rétrocompatibilité : Les projets existants avec NgModules continuent de fonctionner. Ajoutez --no-standalone pour générer en mode classique.

Migration d'Angular 18 à 19

La migration est automatisée et sans breaking changes majeurs.

1. Mettre à jour les dépendances :

ng update @angular/cli@19 @angular/core@19

2. Vérifier avant de migrer :

ng update @angular/core@19 --dry-run

Prérequis :

  • TypeScript 5.5 ou supérieur
  • Node.js 18.19+ ou 20.9+
  • RxJS 7.4+ (inchangé)
Migration progressive : @let, le route render mode et l'HMR sont optionnels. Vous pouvez les adopter progressivement sans toucher au code existant.