经过数天的搜索,我无法确定如何使用相对路径使命名路由出口中的组件影响主路由组件。
- 我已阅读路由和导航
- 我已阅读RouterLink
- 我已阅读梦想成真!...
- 我已在StackOverflow上进行了全面搜索
路由:
let routes: Routes = [
{ path: '', redirectTo: 'auth/portfolio/home/1', pathMatch: 'full'},
{
path: 'auth/:module',
component: AuthComponent,
children: [
{ path: 'home/:value', component: HomeComponent},
{ path: 'home2/:value', component: Home2Component},
{ path: 'details', component: DetailComponent, outlet: 'aux'},
{ path: 'details2', component: Detail2Component, outlet: 'aux'}
]
}
];
这是我的Plunker,展示了一些问题。
- AuthComponent的链接工作得很好。它们可以像文档中说的那样更改子组件或命名路由出口的组件。
- Detail或Home组件正在与我作斗争。通过一些实验,我已经能够让绝对路径(Home2、Detail2)工作,但这不是我们应用程序的解决方案。
- 我知道我可以使用router.navigateByUrl(...),但这仍然不是相对路径,需要进行字符串匹配/正则表达式/其他操作。
问题:获取子路由组件以影响命名路由出口中的同级组件,反之亦然的正确语法是什么?如果可能,请提供一个可工作的plunker。
更新1: 作为一种短期解决方案,我创建了一个AuthRouterService,在AuthComponent中执行子组件的路由。 AuthRouterService在AuthComponent的Providers数组中,因此所有子组件都可以获得一个服务。 如果有人找到可以避免这种hackaround的正确语法,请在此处保留此问题。 如果一周内没有回复,我将使用此hackaround标记它已完成。请参见Plunker,了解AuthRoutingService以及我如何使用它作为hackaround。
谢谢