我已经在我的项目中这样做了。
这用于子路由的延迟加载:
你应该在你的主要app-routing.module.ts 中像这样使用loadChildren:
{ path: 'crisis-center',
loadChildren: 'app/modules/crisis-center/crisis.module#CrisisCenterModule'
},
然后在下面的代码中从您的app-module.ts file 中删除component:
app.module.ts :
@NgModule({
imports: [ RouterModule.forRoot(routes, { useHash: true })
// ,AdminModule
],
declarations: [ ],
providers: [ ],
bootstrap: [ AppComponent ]
})
app-routing.module.ts:
export const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent },
{ path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule'
},
{ path: 'crisis-center',
loadChildren: 'app/modules/crisis-center/crisis.module#CrisisCenterModule'
},
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
{ path: '**', component: PageNotFound},
];
现在很好。当router 导航到此路由时,它使用loadChildren 字符串动态加载AdminModule。然后它将AdminModule 路由添加到其当前路由配置中。最后,它将请求的路由加载到目标管理组件。
您也可以在您的routing 文件中使用它(children[]),并且可以为每个子路由提供单独的组件:
const crisisCenterRoutes: Routes = [
{
path: '',
component: CrisisCenterComponent,
children: [
{
path: '',
component: CrisisListComponent,
children: [
{
path: ':id',
component: CrisisDetailComponent,
canDeactivate: [CanDeactivateGuard]
},
{
path: '',
component: CrisisCenterHomeComponent
}
]
}
]
}
];
然后将所有组件添加到您的特定 module.ts 文件中,如下所示:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { CrisisCenterRoutingModule } from './crisis-center-routing.module';
import { CrisisCenterComponent } from './crisis-center.component';
import { CrisisListComponent } from './crisis-list.component';
import { CrisisDetailComponent } from './crisis-detail.component';
import { CrisisCenterHomeComponent } from './crisis-center-home.component';
import { CrisisService } from './crisis.service';
@NgModule({
imports: [ CommonModule,CrisisCenterRoutingModule,FormsModule, ],
declarations: [CrisisCenterComponent ,CrisisListComponent,CrisisDetailComponent,CrisisCenterHomeComponent ],
providers: [ CrisisService ],
})
export class CrisisCenterModule {}