在特定Url上导航时自动添加queryParams

时间:2017-03-15 10:09:20

标签: angular angular2-routing

我在某个网址“... /浏览器”上导航时加载了一个“浏览器”组件。视图会根据某些查询参数进行更新,因此我可以使用“... / browser?p = 1”这样的网址。

我希望网址“... /浏览器”自动重定向到“... / browser?p = N”,其中N是我们启动应用程序时请求并存储在ngrx-store中的参数

我在初始化“浏览器”组件时试图添加它:

ngOnInit(): void {
  this.store.select((s: AppState) => s.media.rootMediaId)
    .combineLatest(this.route.queryParams, (root, query) => {
      return {root, query};
    })
    .subscribe(({root, query}) => {
      this.rootId = root;
      if (query['p'] === undefined) {
        this.router.navigate([''], { relativeTo: this.route, queryParams: {p: this.rootId} });
      }
    })

  [...]
}

因此,我订阅了rootMediaId和queryParams,以便在获取rootMediaId时更新路由,以及是否未定义queryParams。

首次加载浏览器组件时,它运行良好。但是,如果我在我的应用程序中导航,如果我返回“... /浏览器”,它就不再起作用了。 我在控制台登录了Promise this.router.navigate(...)的响应并且它是假的,因此路由器不会导航。我可以强制查询参数的实现,还是我想要的其他方式?

谢谢,

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。 我在没有任何查询参数的特殊情况下更新视图,就好像在那里" p = N"作为查询参数...它没有回答我在这里提出的问题,但它足以让我使用。