Cours Angular · Module 3: Modules
Standalone Components vs NgModules
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 ?
| Scenario | Recommendation |
|---|---|
| Nouveau projet (Angular 17+) | Standalone Components |
| Projet existant | Rester avec NgModules |
| Bibliothèque Angular | Standalone (plus simple à utiliser) |
| Grand projet d'entreprise | Tu 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. À partir de quelle version d'Angular les Standalone Components sont-ils l'approche par défaut et recommandée ?
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: () =>