Angular 在特定Url上导航时自动添加查询参数

Angular 在特定Url上导航时自动添加查询参数,angular,angular2-routing,Angular,Angular2 Routing,我有一个组件“Browser”,当我在某个url上导航时加载“../Browser”。视图会根据一些查询参数进行更新,因此我可以有一个类似“../browser?p=1”的url 我希望url“../browser”自动重定向到“../browser?p=N”,其中N是启动应用程序时请求并存储在ngrx存储中的参数 我在初始化“浏览器”组件时尝试添加以下内容: ngOnInit(): void { this.store.select((s: AppState) => s.media.r

我有一个组件“Browser”,当我在某个url上导航时加载“../Browser”。视图会根据一些查询参数进行更新,因此我可以有一个类似“../browser?p=1”的url

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

我在初始化“浏览器”组件时尝试添加以下内容:

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未定义时更新路由

当我第一次加载浏览器组件时,它工作得很好。但如果我在我的应用程序中导航并且返回“../browser”,它将不再工作。 我在控制台上登录了承诺this.router.navigate(…)的响应,结果为false,因此路由器无法导航。我可以强制实现查询参数吗,或者这是我想要的另一种方式吗


谢谢你,我找到了解决这个问题的办法。 在没有任何查询参数的特殊情况下,我会更新视图,就像有“p=N”作为查询参数一样。。。它不能回答我在这里提出的问题,但它足以满足我的使用