Pat*_*ice 4 angular2-routing angular2-router3 angular
我正在使用RC5的NgModule来进行动态路由加载.
我的应用程序有两个深度级别.我有以下路线:
每个deph级别都有自己的路由器插座,所以我可以在每个级别定义自定义布局.即登录和仪表板显示在app router-outlet中,而module1和module2显示在仪表板router-outlet中.
根据需要动态加载每个路由的配置是什么?
Pat*_*ice 11
这是动态加载accoss NgModules和router-outlet的最小工作示例.
app.module.ts
@NgModule({
declarations: [AppComponent],
imports: [
RouterModule,
routing],
bootstrap: [AppComponent],
providers: [
// some providers
]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
app.component.ts
@Component({
template: '<router-outlet></router-outlet>'
})
export class BadAppComponent { }
Run Code Online (Sandbox Code Playgroud)
在<router-outlet>哪里/login和/dashboard将要布局.
app.routes.ts
export const routes: Routes = [
{path: '', redirectTo: '/login', terminal: true},
{path: 'login', component: LoginComponent},
{path: 'dashboard', loadChildren: 'app/dashboard/dashboard.module#DashboardModule'}
];
export const routing: ModuleWithProviders = RouterModule.forRoot(routes);
Run Code Online (Sandbox Code Playgroud)
loadChildren 指向要按需加载的模块.
dashboard.module.ts
@NgModule({
declarations: [
DashboardComponent
],
imports: [CommonModule, RouterModule, routing],
exports: [DashboardComponent],
providers: [
// some providers
]
})
export class DashboardModule { }
Run Code Online (Sandbox Code Playgroud)
dashboard.component.ts
@Component({
moduleId: module.id,
template: '<div>sidebar left</div><router-outlet></router-outlet><div>sidebar right</div>',
})
export class DashboardComponent {
constructor() {}
}
Run Code Online (Sandbox Code Playgroud)
<router-outlet>在哪里/dashboard/accounts和/dashboard/transfert将要布局.您不应该命名路由器插座
dashboard.routes.ts
export const routing: ModuleWithProviders = RouterModule.forChild([
{path: '', component: DashboardComponent,
children: [
{ path: 'accounts', loadChildren: 'app/dashboard/accounts/accounts.module#DashboardAccountsModule'},
{ path: 'virement', loadChildren: 'app/dashboard/transfert/transfert.module#DashboardTransfertModule'}
]
}
]);
Run Code Online (Sandbox Code Playgroud)
children确保子路径加载到当前<router-outlet>即仪表板的路由器输出器中
accounts.module.ts
@NgModule({
declarations: [
AccountsFragment
],
imports: [CommonModule, RouterModule, routing],
exports: [AccountsFragment]
})
export class DashboardAccountsModule { }
Run Code Online (Sandbox Code Playgroud)
accounts.routing.ts
export const routing: ModuleWithProviders = RouterModule.forChild([
{ path: '', component: AccountsComponent}
]);
Run Code Online (Sandbox Code Playgroud)
这是路线的终点.它将显示在仪表板的路由器插座中,因为它是仪表板的子路径.
accounts.component.ts
@Component({
moduleId: module.id,
template: '<div>Your accounts!!</div>'
})
export class AccountsComponents {
}
Run Code Online (Sandbox Code Playgroud)
这就对了.您应该拥有构建"随时加载"应用程序所需的一切.希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |