Avoir plusieurs modules dans son application - Découvrir angular–Mon premier projet

Maintenant que tout parait ĂȘtre mis en place (en fait, il manque encore beaucoup de choses pour notre application de gestion des clones), on va organiser notre code.
Avoir plusieurs modules, rĂ©partis en fonction des grandes fonctionnalitĂ©s va aider notre code Ă  ĂȘtre organisĂ©.

C’est parti voyons ensemble comment organiser mieux notre code !

Tout d’abord, on organise par fonctionnalitĂ©, ou par grande idĂ©e.
Ici, nous avons traité des informations, des pages autour des clones. Ainsi, nous aurons un Module dédié au clone.

=> PremiÚre étape : créer un dossier appelé clones.

Zoom sur des Modules utilisés par nos Modules

BrowserModule

Dans le Module AppModule, nous avons référencé et utilisé le module BrowserModule.

Ce Module sert pour référencer les autres modules, il est donc utile pour le Module de démarrage.

CommonModule

Le Module CommonModule est référencé et utilisé dans les modules enfants.

Il exporte les directives ngIf, et ngFor, ainsi que les pipes d’Angular.

Routes et Modules

Vu que Angular a pensé les Modules comme des entités séparées, nous devons chercher à séparer au maximum : SRP (Séparation des responsabilités).

Et donc, cela induit que chaque Module a ses propres routes.

Nous allons donc créer un Module dédié aux routes des clones.

NOTE: si vous utilisez le snippet proposé par Visual Code, il vous proposera un RouterModule.forRoot(routes). Or, nous sommes dans un sous-module de route, donc il faut utiliser le RouterModule.forChild(routes) !


import { NgModule } from ‘@angular/core’;

import { RouterModule, Routes } from ‘@angular/router’;

import { MoreDetailCloneComponent } from ‘../clones/more-detail-clone.component’;

import { CloneListComponent } from ‘../clones/clone-list/clone-list.component’;

const routes: Routes = [

{ path: ‘clones’, component: CloneListComponent},

{ path: ‘clone/:id’, component: MoreDetailCloneComponent}, // no slash to start url

];

@NgModule({

imports: [RouterModule.forChild(routes)], // forChild because childs routes

exports: [RouterModule]

})

export class ClonesRouteConfigModule {}

NOTE : cela va nous permettre de clarifier le RouteConfig.ts de base :

import { NgModule } from ‘@angular/core’;

import { RouterModule, Routes } from ‘@angular/router’;

import { NotFoundExceptionComponent } from ‘../not-found-exception/not-found-exception.component’;

const routes: Routes = [

{ path:  », redirectTo: ‘clones’, pathMatch: ‘full’ },

{ path: ‘**’, component: NotFoundExceptionComponent}

];

@NgModule({

imports: [RouterModule.forRoot(routes)],

exports: [RouterModule] // need to export to be used by AppModule !

})

export class RouteConfigModule {

}

Appeler un Module dans le Module parent

L’appel d’un Module rĂ©alisĂ© par nous se fait Ă  l’identique d’un module dĂ©jĂ  prĂ©sent dans Angular.

@NgModule({

imports: [

BrowserModule,

ClonesModule, // declaring before RouteConfig to be sure routes will be ok

RouteConfigModule // global routes

],

declarations: [

AppComponent,

HighlightDirective,

NotFoundExceptionComponent

],

bootstrap: [

AppComponent//moduleracineaudémarrage

]

})

export class AppModule {

}

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639