angular2路由器,参数错误

时间:2017-06-14 14:15:55

标签: angular angular2-routing

这可能是重复的,但我找不到答案。

当我尝试使用params导航到路由器时,出现以下错误:Error: Cannot match any routes. URL Segment: 'order/24'

我的路由器配置是:

const routes: Routes = [
  {
    path: 'pm', component: PmComponent, canActivateChild: [AuthGuard],
    children: [
      {path: 'orderlist', component: OrderlistComponent},
      {path: 'new-order', component: NewOrderComponent},
      {path: 'order/:id', component: OrderComponent},
      {path: '**', component: PmDefaultComponent}
    ]
  }
];
我在new-order组件中的

尝试导航到order/:id

this.router.navigate(['order/', this.orderId]);

我已经尝试了

this.router.navigate(['/order/', this.orderId]);

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

问题是您定义了path: 'pm', component: ..,因此此路线的所有孩子都必须以pm开头。尝试导航到这样的路线:

this.router.navigate(['/pm/order', this.orderId]);

答案 1 :(得分:1)

尝试

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

其中this.route是注入的ActivatedRoute实例。或者你可以使用this.router.navigate(['/pm/order', this.orderId])的absolut路径选项。

  • ../表示您在路线树中升级一级
  • ./表示sybling
  • /表示绝对路径,this.router.navigate(['/order', this.orderId]);例如root/order/:id