J'ai un projet angulaire avec succès sur l'environnement Mac
const rootRoutes: Routes = [ { path: 'site', loadChildren: './website/site.module#SiteModule' } ];
Maintenant, j'exécute le même code sur ubuntu 18.04 avec la configuration
const routes: Routes = [ { path: 'site', loadChildren: 'app/website/site.module#SiteModule', } ]
Cependant, il arrive avec un problème très étrange lorsque vous essayez de charger paresseusement un autre module, je continue à recevoir cette erreur Erreur: Impossible de trouver le module "app / website / site.module"
Voici la structure de mon projet
et app-routing.module.ts
Angular CLI: 7.3.9 Node: 12.9.1 OS: linux x64 Angular: 7.2.15
le routage est utilisé pour fonctionner sous mac mais a échoué sous ubuntu
J'ai recherché une solution différente
Angular CLI: 7.0.5 Node: 8.11.3 OS: darwin x64 Angular: 7.0.3
mais cela n'a toujours pas fonctionné.
4 Réponses :
J'ai créé un exemple de projet sur stackblitz
Explication:
Alors tout d'abord, vous devez créer vos itinéraires comme ceci:
const routes: Routes = [ { path: 'route1', component: Component2Component }, { path: '', component: Component3Component } ]; @NgModule({ imports: [ // your imports here ... RouterModule.forChild(routes) ], declarations: [Component2Component, Component3Component] }) export class ModuleModule { }
Ensuite, ajoutez-le au module d'application (module racine):
@NgModule({ imports: [ // your imports here ... // add your routes (forRoot() is only in the root module!) RouterModule.forRoot(routes) ], // your providers, declarations, etc. }) export class AppModule { }
Ensuite, vous devez ajouter des routes au module enfant (dans ce cas ModuleModule):
const routes: Routes = [ // this will get lazy loaded { path: 'lazyload', loadChildren: () => import('./module/module.module').then(mod => mod.ModuleModule) }, // default route { path: '**', component: Component1Component } ];
maintenant cela devrait fonctionner, si vous avez des problèmes, je serai là :)
J'ai eu un problème similaire, dans mon code c'était le même chemin que votre
{ path: 'admin', loadChildren: './admin/admin.module#AdminModule' }
et après avoir changé le fichier tsconfig.app.json
il a commencé à fonctionner et à trouver un itinéraire enfant, sur l'image ci-jointe, vous pouvez voir les changements que j'ai faits
Changer "include": ["src/**/*.d.ts"]
en "include": ["src/**/*.ts"]
fonctionné pour moi -_- Je n'aurais jamais trouvé ça par moi-même
Cela a fonctionné pour moi aussi .... Mais je reçois maintenant un autre avertissement tel que "... user-news.component.spec.ts fait partie de la compilation TypeScript mais il n'est pas utilisé. Ajoutez uniquement des points d'entrée au ' files 'ou' include 'propriétés dans votre tsconfig. " . Je ne sais pas si je devrais m'inquiéter à leur sujet ou non à ce stade.
ou ajoutez "src / ** / *. module.ts" pour ne pas charger autant
Dans mon cas particulier, la solution Pavel B. a fonctionné le mieux. Aucun avertissement à la compilation ou à l'exécution!
@angular-devkit/architect 0.901.7 @angular-devkit/build-angular 0.901.7 @angular-devkit/build-optimizer 0.901.7 @angular-devkit/build-webpack 0.901.7 @angular-devkit/core 9.1.7 @angular-devkit/schematics 9.1.7 @angular/cli 9.1.7 @ngtools/webpack 9.1.7 @schematics/angular 9.1.7 @schematics/update 0.901.7 rxjs 6.5.5 typescript 3.8.3 webpack 4.42.0
En utilisant:
CLI angulaire: 9.1.7 Nœud: 12.14.0 OS: darwin x64
Angulaire: 9.1.9 ... animations, communs, compilateur, compilateur-cli, noyau, formulaires ... navigateur de plate-forme, navigateur de plate-forme dynamique, routeur Ivy Workspace: Oui
Package et versions
{ path: 'users', loadChildren: () => import('./users/users.module').then(mod => mod.UsersModule) }
Cela fonctionne pour moi. Version angulaire: 10.0.8.
Vous pouvez utiliser comme ceci:
const rootRoutes: Routes = [ { path: 'site', loadChildren: () => SiteModule } ];
après avoir utilisé cette approche, votre lazy-loading
lazy-loading
ne sera plus lazy-loading
essayez ceci
() => import('./orders/orders.module').then(mod => mod.OrdersModule)
source: angular.io/guide/lazy-loading-ngmodulesest-ce la façon de faire sur angulaire 8?
Je vais vous donner une réponse et un guide complet en sec, cela devrait être le même que dans angulaire 7
Angulaire 9:
loadChildren: () => import('./app/order/orders.module').then(m => m.NewOrdersModule)