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

时间:2017-05-19 09:00:33

标签: angular routes lazy-loading router

我的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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您必须将路由添加到您的子模块

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

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

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

答案 1 :(得分:0)

由于您已在imports:[ ]的{​​{1}}(或任何其他模块文件)中添加了导入,因此可能会出现此问题。

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

例如:我有三个模块,分别为:AppModuleHomeModuleProfileModule。 如果SettingsModule已被加载,并且HomeModuleProfileModule被延迟加载,则SettingsModule中的imports:[]应该看起来像这样:

AppModule(app.module.ts),并且不应包含imports:[HomeModule]ProfileModule,因为它们将在运行时自动加载。