【发布时间】:2016-10-21 08:08:14
【问题描述】:
这里你可以看到问题:
admin-area-models-models 应该被渲染到名称为models-content 的路由器出口中,但它被放置在与父模块相同的路由器出口中,即admin-area-models。这没有任何意义,因为我在admin-area-models 路由器中得到了这个:
const routes: Routes = [
{
path: '',
component: ModelsComponent
},
{
path: 'brands',
loadChildren: '../pages/+models-brands/models-brands.module#ModelsBrandsModule',
outlet: 'models-content'
},
{
path: 'models',
loadChildren: '../pages/+models-models/models-models.module#ModelsModelsModule',
outlet: 'models-content'
},
{
path: 'models/:id',
loadChildren: '../pages/+model/model.module#ModelModule',
outlet: 'models-content'
}
];
@NgModule({
imports: [
ComponentsModule,
SharedModule,
RouterModule.forChild(routes)
],
declarations: [
ModelsComponent
]
})
export class ModelsRouterModule {}
为什么当我定义了一个特定的出口时,它仍然将它呈现到顶层?
编辑:
如果我更改为子路由,则改为这样定义:
const routes: Routes = [
{
path: '',
component: ModelsComponent,
children: [
{
path: 'brands',
loadChildren: '../pages/+models-brands/models-brands.module#ModelsBrandsModule',
outlet: 'models-content'
},
{
path: 'models',
loadChildren: '../pages/+models-models/models-models.module#ModelsModelsModule',
outlet: 'models-content'
},
{
path: 'models/:id',
loadChildren: '../pages/+model/model.module#ModelModule',
outlet: 'models-content'
}
]
}
];
那么所有路由都不起作用。 ModelsComponent 位于 /admin/dashboard/models,因此在第一个配置中,我显示了所有可访问的路由,如下所示:
/admin/dashboard/models
/admin/dashboard/models/(models-content:brands)
/admin/dashboard/models/(models-content:models)
/admin/dashboard/models/(models-content:models/5) // Any number
但是在尝试使用children 的配置时,我无法再访问这些路由中的任何一个。建议将此语法与延迟加载的文件一起使用是错误的。
【问题讨论】: