首页 文章

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

提问于
浏览
1

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

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

我在初始化“Browser”组件时尝试添加它:

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 回答

  • 1

    我找到了解决问题的方法 . 我在没有任何查询参数的特殊情况下更新视图,因此如果有“p = N”作为查询参数...它没有回答我在这里问的问题,但它足以满足我的用法 .

相关问题