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

Is it possible to update one defined router parameter?

导航到路线的标准方法是

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

具有以下路由配置:

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

我的 class 的构造函数是

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

我想做的只是更新 current 路由的 id

类似

this.route.params.id = 10;

然后导航到该路线

this.router.navigate(this.route);

angular路由是否可行?

您不能操纵 params,因为这是一个 Observable。 你可以这样做:

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

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

from `welcome/1` to `welcome`

之后你的参数被附加到路由。

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

我说的对吗,您想在组件路由参数发生变化时对组件内部的变化做出反应?

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

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

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

paramMap 使您可以更好地控制访问路由的某些参数。