延迟加载以在Angular 2中路由除空路线之外的其他路线

问题描述 投票:2回答:2

我有我的app-routing.module.ts如下:


    import { NgModule } from '@angular/core';
    import {
        Routes,
        RouterModule
    } from '@angular/router';

    const routes: Routes = [
        {
            path        : 'reset', 
            loadChildren: 'app/auth/reset-password-form/reset-password-form.module#ResetPasswordFormModule'
        },
        {
            path        : 'verify',
            loadChildren: 'app/auth/verify-user-form/verify-user-form.module#VerifyUserFormModule'
        },
        {
            path        : '404',
            loadChildren: 'app/route-not-found/route-not-found.module#RouteNotFoundModule'
        },
        {
            path        : '',
            pathMatch   : 'full',
            loadChildren: 'app/landing-page/landing-page.module#LandingPageModule'
        },
        {
            path      : '**',
            redirectTo: '/404'
        },

    ];

    @NgModule({
        imports: [RouterModule.forRoot(routes)],
        exports: [RouterModule]
    })
    export class AppRoutingModule {
    }

当我导航到localhost:4200时,它将正确加载landing-page.module,但是,当我输入localhost:4200/resetlocalhost:4200/verifylocalhost:4200/404时,它将不会加载相关模块,而是自动加载landing-page.module

我怎么解决这个问题?

angular routes lazy-loading router
2个回答
0
投票

您必须将路由添加到您的childmodule

  const routes: Routes = [
  { path: '', component: ResetComponent}
  ];
  const ROUTES: ModuleWithProviders = 
  RouterModule.forChild(routes);

并在子模块中导入ROUTES(ResetModule)

@NgModule({
 imports: [
    CommonModule,
    ROUTES,
    ],
 declarations: [ResetComponent],
 exports: [ResetComponent]
})

0
投票

由于您在imports:[ ](或任何其他模块文件)的AppModule中添加了导入,因此可能会发生此问题。

确保从imports数组中删除所有延迟加载的模块。

例如:我有三个模块:HomeModuleProfileModuleSettingsModule。如果HomeModule被负载并且ProfileModuleSettingsModule被懒洋洋地加载,那么imports:[]AppModule(app.module.ts)应该如下所示:

imports:[HomeModule],它不应该包括ProfileModuleSettingsModule,因为它们将在运行时自动加载。

© www.soinside.com 2019 - 2024. All rights reserved.