Cours Angular · Module 3: Modules

Standalone Components vs NgModules

1 min de lecture
Dans cette leçon3

Angular 17+ privilégie les Standalone Components - une approche plus simple, sans modules.

Comparaison des approches

Ancienne méthode (basée sur NgModule)

1// samurai.component.ts
2@Component({
3  selector: 'app-samurai',
4  standalone: false,
5  templateUrl: './samurai.component.html'
6})
7export class SamuraiComponent { }
8
9// samurai.module.ts
10@NgModule({
11  declarations: [SamuraiComponent],
12  imports: [CommonModule, SharedModule],
13  exports: [SamuraiComponent]
14})
15export class SamuraiModule { }

Nouvelle méthode (Standalone)

1// samurai.component.ts - tout dans un seul fichier!
2@Component({
3  selector: 'app-samurai',
4  standalone: true,
5  imports: [CommonModule, CardComponent, ButtonComponent],
6  templateUrl: './samurai.component.html'
7})
8export class SamuraiComponent { }
9
10// Utilisation - import direct
11@Component({
12  standalone: true,
13  imports: [SamuraiComponent]
14})
15export class AppComponent { }

Le lazy loading avec Standalone

1// app.routes.ts
2export const routes: Routes = [
3  {
4    path: 'samurai',
5    loadComponent: () => import('./samurai/samurai.component')
6      .then(c => c.SamuraiComponent)
7  },
8  {
9    path: 'dojo',
10    loadChildren: () => import('./dojo/dojo.routes')
11      .then(r => r.DOJO_ROUTES)
12  }
13];

Quand utiliser quoi ?

ScenarioRecommendation
Nouveau projet (Angular 17+)Standalone Components
Projet existantRester avec NgModules
Bibliothèque AngularStandalone (plus simple à utiliser)
Grand projet d'entrepriseTu peux combiner les deux approches

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. À partir de quelle version d'Angular les Standalone Components sont-ils l'approche par défaut et recommandée ?

  2. 2. Où un composant standalone déclare-t-il ses dépendances (par exemple CommonModule) ?

Voici 2 des 4 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Éditeur de code

    Complète le composant de carte du samouraï pour qu'il fonctionne sans NgModule et intègre lui-même CommonModule et RouterLink, utilisés par son template.

  • Tri horizontal

    Ordonne les éléments de la ligne marquant un composant comme standalone dans le décorateur :

  • Clique dans l'ordre

    Clique sur les éléments dans l'ordre pour construire le début du lazy loading standalone : loadComponent: () =>

Articles utiles