=====Installation===== ====Base==== Pour chacune des opérations ci-dessous, ne pas oublier ng build ====Mise à jour==== npm install -g npm@latest npm --version npm install -g @angular/cli ng --verion ====Gestion des paquets==== Ca se passe dans le fichier [[prog:nodejs:npm|package.json]]. ===Installer une version spécifique=== npm install @angular/core@9.1.4 @angular/animations@9.1.4 @angular/common@9.1.4 @angular/forms@9.1.4 @angular/platform-browser@9.1.4 @angular/router@9.1.4 @angular/platform-browser-dynamic@9.1.4 @angular/compiler@9.1.4 @angular/compiler-cli@9.1.4 @angular/language-service@9.1.4 ===Gestion des erreurs de mise à jour=== En cas de problème, il est possible d'installer une version spécifique. * ''%%npm WARN @angular/animations@9.1.7 requires a peer of tslib@^1.10.0 but none is installed. You must install peer dependencies yourself.%%'' Suite à la mise à jour, j'avais ''tslib@2.0'' d'installée. J'ai dû changer la version en ''^1.10.0'' dans ''package.json'' et faire ''npm install''. =====Modification d'un projet===== ====Ajouter==== ====Component (page web)==== ng generate component modules/general/contact --module=app Ce component pourra être appelé via ====Module==== Un module est un ensemble de components et d'autres modules. ===Routage=== Définir la jonction entre URL et component. ng generate module app-routing --flat --module=app ''%%--flat%%'' : ''When true, creates the new files at the top level of the current project root.'' * Modifier le fichier ''app-routing.module.ts'' : import { Routes, RouterModule } from '@angular/router'; import { ContactComponent } from './modules/general/contact/contact.component'; import { NotFoundComponent } from './modules/general/not-found/not-found.component'; const routes: Routes = [ { path: 'contact', component: ContactComponent }, { path: '**', component: NotFoundComponent } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], declarations: [] }) Dans ''routes'', l'ordre est important. Si ''**'' est mis au début, tous les liens seront redirigés vers ''not-found''. * Ajouter dans le fichier ''app.component.html'' : * Ajouter dans le fichier de test ''app.component.spec.ts'' : import { RouterTestingModule } from '@angular/router/testing'; TestBed.configureTestingModule({ imports: [ RouterTestingModule ], declarations: [ AppComponent ], }).compileComponents(); ===Lazy load=== Chargement en différé d'un component. ng generate module modules/general/contact --routing --module=app ng generate component modules/general/contact/mailing --module=app * Ajouter dans le fichier ''app.component.html'' : * Dans le fichier ''app.module.ts'' Enlever manuellement le nouveau module : -import { ContactComponent } from './modules/general/contact/contact.component'; -import { ContactModule } from './modules/general/contact/contact.module'; ... @NgModule({ declarations: [ ... - ContactComponent, ... imports: [ ... - ContactModule, * Dans le fichier ''app-routing.module.ts'' Le chargement du component ne se fait plus au niveau global de l'application. -import { ContactComponent } from './modules/general/contact/contact.component'; const routes: Routes = [ - { path: 'contact', component: ContactComponent }, + path: 'contact', + loadChildren: () => import('./modules/general/contact/contact.module') + .then(mod => mod.ContactModule) + }, * Dans le fichier ''modules/general/contact/contact.module.ts'' Le chargement du component se fait lors du chargement du module contact. +import { ContactComponent } from './contact.component'; ... @NgModule({ - declarations: [], + declarations: [ + ContactComponent + ], imports: [ CommonModule, ContactRoutingModule ], + exports: [ + ContactComponent + ] }) * Dans le fichier ''modules/general/contact/contact-routing.module.ts'' Remplacer ''const routes: Routes = [];'' par : import { ContactComponent } from './contact.component'; const routes: Routes = [ { path: '', component: ContactComponent }, ]; [[https://www.ganatan.com/tutorials/lazy-loading-avec-angular|Lazy loading avec Angular 9]] {{ :lang:angular:cli:3-implementer_le_lazy_loading_avec_angular_2020-05-09_9_30_19_am_.html | Archive du 03/05/2020 le 09/05/2020}}