这是路由器配置:
export const routes: Routes = [
{
path: 'atc/:atcId',
component: AtcComponent,
resolve: {
atcList: 'atcList',
},
children: [
{path: '', redirectTo: 'goal', pathMatch: 'full'},
{
path: 'goal',
component: GoalComponent
},
{
path: 'visit',
component: VisitComponent
},
]
}
];
我想导航到“兄弟”页面。所以,如果我在/ atc / 1 / goal,它想要/ atc / 2 / goal。如果我在/ atc / 1 /访问,我想去/ atc / 2 /访问。
假设我当前的路线是/ atc / 1 / visit 我想导航到id 2的atc。
我在AtcComponent里面。对于此父组件POV,我当前的路由是/ atc / 1。它对'目标'或'访问'一无所知。 我做这样的事情:
this.router.navigate(['../', '2'], {relativeTo: this.route});
但是当我这样做时,它将其解析为/ atc / 2。它删除了“访问”或“目标”部分。然后由于路线,它被重定向到/ atc / 2 / goal。
我是否遗漏了API中的某些内容,或者是否有一种方法可以让儿童保持原样路线?
谢谢
编辑:这是一个更好地解释这种情况的stackblitz:https://stackblitz.com/edit/angular-keep-children-route
答案 0 :(得分:0)
您应该以这种方式重定向:
this.router.navigate(['../', '2', 'visit'], {relativeTo: this.route});