角度改变路线参数不改变儿童路线

时间:2017-11-13 16:05:47

标签: angular

这是路由器配置:

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

1 个答案:

答案 0 :(得分:0)

您应该以这种方式重定向:

this.router.navigate(['../', '2', 'visit'], {relativeTo: this.route});