【发布时间】:2016-08-24 19:13:19
【问题描述】:
我试图了解我应该如何组织多个路由文件并使它们一起很好地发挥作用。
我想要的路线如下所示:
/
/forms
/forms/:id
/forms/named-form (named-form2, named-form3, etc.)
/forms/named-form(2,3,etc)/admin
/forms/named-form(2,3,etc)/admin/(several options here)
我想要的文件组织:
/app.module
/app.routes
/app.component <--Router Outlet
/forms/forms.module
/forms/forms.routes
/forms/forms.component <--Router Outlet for displaying Form Creation, Details, Settings, etc.
/forms/named-form/named-form.module
/forms/named-form/named-form.routes
/forms/named-form/named-form.component <--Router Outlet for displaying Form or Admin section
/forms/named-form/admin/admin.module
/forms/named-form/admin/admin.routing
/forms/named-form/admin/admin.component <--Router Outlet for various admin pages
我现在拥有的东西:
/forms.routing.ts
const formsRoutes: Routes = [
{
path: 'forms',
component: FormsComponent,
children: [
{ path: '', component: FormsListComponent },
{ path: ':id', component: FormsListComponent }
]
}
];
export const formsRouting = RouterModule.forChild(formsRoutes);
/forms/named-form.routing.ts
const namedFormRoutes: Routes = [
{
path: 'forms/named-form',
component: NamedFormComponent,
children: [
{
path: '',
component: NamedFormFormComponent,
},
{
path: 'confirmation',
component: NamedFormConfirmationComponent
}
]
}
];
/forms/named-form/admin.routes.ts
const namedFormAdminRoutes: Routes = [
{
path: 'forms/named-form/admin',
component: NamedFormAdminComponent,
children: [
{
path: '',
component: ManageDataComponent,
},
{
path: 'manage-data',
component: ManageDataComponent
},
{
path: 'settings',
component: SettingsComponent
},
{
path: 'import',
component: ImportDataComponent
}
]
}
];
这主要是可行的,但我遇到了一些问题。我希望我不必在嵌套路由中越深入指定完整路径。例如,管理路径是forms/named-form/admin,但我希望它已经知道它是named-form 的孩子。这是导致我认为我做错了什么的原因之一。
我还需要能够在我的named-form.component 文件中执行将影响admin.component 的操作,但如果我导航到forms/named-form/admin,named-form.component 目前不会被触及。它最终使用主要的app.component 路由器插座而不是named-form.component 路由器插座。
我可以在named-form.routes 文件中包含admin 的路径,但是我不知道如何设置管理子路由,而不必导入所有主要的管理子组件,这使得它的模块化程度降低。
我不确定是否需要查看我的模块,但如果需要,我会添加它们。
我怎样才能做得更好?感谢观看。
【问题讨论】: