是否可以更新一个定义的路由器参数?

时间:2017-06-29 11:46:58

标签: angular angular-routing

导航到路线的标准方法是

this.router.navigate(["/details", "30"]

使用以下路由配置:

{ path: "details/:id", component: TestRouteComponent }

我班级的构造函数是

constructor(private router: Router, private route: ActivatedRoute) { }

我想要做的只是更新当前路线的id

这样的东西
this.route.params.id = 10;

然后导航到该路线

this.router.navigate(this.route);

角度路由是否可行?

2 个答案:

答案 0 :(得分:2)

您无法操纵params,因为这是Observable。 你可以这样做:

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

这两个点表示您向上移动一级。

from `welcome/1` to `welcome`

之后,您的参数将附加到路线上。

但我想知道是否有更好的方法来简单地更改参数。

答案 1 :(得分:0)

我是对的,当路径的参数发生变化时,你想对组件内部的变化做出反应吗?

如果是,您不想触发新导航。 您只需订阅params的更改。

 constructor(private route: ActivatedRoute) {
   this.route.params.subscribe(params => {
      /* access updated params and trigger further actions */
  }
}

现在,如果您有多个链接(例如routerLink)指向您的组件只有不同的参数,路由器将检测到不需要激活新路由。 因此,您可以订阅paramsparamMap

paramMap为您提供了更多控制权,可以访问路线的某些参数。