Cours Angular · Module 3: Modules
Feature Modules - Les provinces du royaume
Dans cette leçon2
Les feature modules divisent l'application en parties logiques - comme les provinces du Japon féodal, chacune avec sa propre spécialisation.
Les types de modules
1. Feature Module (Province)
Regroupe une fonctionnalité métier :
1// features/samurai/samurai.module.ts
2@NgModule({
3 declarations: [
4 SamuraiListComponent,
5 SamuraiDetailComponent,
6 SamuraiFormComponent
7 ],
8 imports: [
9 CommonModule,
10 SharedModule,
11 SamuraiRoutingModule
12 ],
13 exports: [SamuraiListComponent]
14})
15export class SamuraiModule { }2. Shared Module (Ressources communes)
Contient les éléments réutilisables :
1// shared/shared.module.ts
2@NgModule({
3 declarations: [
4 ButtonComponent,
5 CardComponent,
6 LoadingSpinnerComponent,
7 HighlightDirective,
8 TruncatePipe
9 ],
10 imports: [CommonModule],
11 exports: [
12 // On exporte TOUT ce qui peut être utilisé dans d'autres modules
13 CommonModule,
14 ButtonComponent,
15 CardComponent,
16 LoadingSpinnerComponent,
17 HighlightDirective,
18 TruncatePipe
19 ]
20})
21export class SharedModule { }3. Core Module (Centre de commandement)
Les singletons et les éléments chargés une seule fois :
1// core/core.module.ts
2@NgModule({
3 imports: [
4 CommonModule,
5 HttpClientModule
6 ],
7 providers: [
8 AuthService,
9 LoggingService,
10 { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
11 ]
12})
13export class CoreModule {
14 // Protection contre les imports multiples
15 constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
16 if (parentModule) {
17 throw new Error('CoreModule already loaded. Import only in AppModule!');
18 }
19 }
20}Structure des dossiers
1src/app/
2├── core/ # Singleton services, guards, interceptors
3│ ├── core.module.ts
4│ ├── services/
5│ │ ├── auth.service.ts
6│ │ └── api.service.ts
7│ ├── guards/
8│ └── interceptors/
9│
10├── shared/ # Reusable components, directives, pipes
11│ ├── shared.module.ts
12│ ├── components/
13│ ├── directives/
14│ └── pipes/
15│
16├── features/ # Feature modules
17│ ├── samurai/
18│ │ ├── samurai.module.ts
19│ │ ├── samurai-routing.module.ts
20│ │ ├── components/
21│ │ ├── services/
22│ │ └── models/
23│ └── dojo/
24│
25├── app.module.ts
26├── app.component.ts
27└── app-routing.module.tsTu 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. Quel type de module contient des composants, directives et pipes réutilisables partagés entre les feature modules ?
2. Que regroupe un Feature Module (province) dans l'architecture Angular ?
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 SharedModule pour qu'il mette à disposition des autres modules ButtonComponent ainsi que le module qui fournit les directives *ngIf et *ngFor et le pipe async.
- Tri horizontal
Ordonne les éléments du décorateur qui protègent CoreModule contre les imports multiples (paramètre du constructeur) :
- Tri vertical
Ordonne les répertoires d'une application Angular selon la convention (de la couche la plus basse jusqu'aux fonctionnalités) :
- Clique dans l'ordre
Clique sur les éléments dans l'ordre pour construire le début de la propriété providers : providers: [