父组件中的Angular 2 routerLink相对于子路由?

时间:2017-01-12 10:55:13

标签: angular angular2-routing

我有:

  • 主要组件
  • - 带参数
  • 的First-Child组件
  • - 第二子组件

First-Child的路径及其参数: http://localhost/mpm/0776452c

第二子路径应该是: http://localhost/mpm/0776452c/settings

我的问题是我想把第二子组件的链接放在主组件中。

我试过这种方式: [routerLink] ="' ./设置'" 但由于某种原因,生成的链接最后有圆括号: http://localhost/mpm/0776452c/(settings)

您是否知道如何以简单的方式解决这个问题,因为现在我生成了Second-Child组件的完整路径?

谢谢!

修改: Second-Child组件的链接放在Main组件中。 这个想法是我在First-Child组件(http://localhost/mpm/0776452c)中想要点击[routerLink] ="' ./ settings'"它位于主要组件中,因此我可以转到http://localhost/mpm/0776452c/settings

编辑2 - 我的路由器配置

{
  path: '',
  component: MainComponent,
  canActivate: [AuthGuard],
  children: [
    {
      path: 'mpm/:id',
      component: FirstChild,
      canActivate: [AuthGuard]
    },
    {
      path: 'mpm/:id/settings',
      component: SecondChild,
      canActivate: [AuthGuard]
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

如果您使用" ./ settings"作为您的路线,它将尝试导航到FirstComponent的孩子,您需要使用" ../ settings",但即使这样也不会有效。

您可能需要重新修改路线工作方式,并使SecondComponent成为路线中FirstComponent的子项。

如果您尝试导航到../settings,父路由将是/ mpm,因此它将解析为/ mpm / settings,而不是/ mpm /:id / settings。唯一可行的方法是将routerLink更改为:

routerLink="../{{id}}/settings"

P.S,如果你不想绑定一个值,你可以省略括号。这样你就不必用引号括起你的价值。