Angular2中的路由器导航和查询参数[RC5]

时间:2016-08-16 21:37:41

标签: angular routing

我正在尝试执行以下操作:

以非常抽象的术语,我有一个ListComponent和一个FilterComponentListComponent包含资源列表,过滤器的工作是过滤这些资源(过滤器是与列表一起显示的实际组件,由过滤器模型支持)。

我希望过滤器可以在多个不同的路径上工作,因为ListComponent位于多个位置。挑战是从过滤器中收集过滤器属性并将其反映在路径的查询参数中,因此如果/list是当前路线并且我们更改过滤器组件的属性(通过单击某些过滤器,我们称他们为foobar),路线应更改为/list;foo=X;bar=Y

有没有简单的方法来实现这一目标? 如果有办法在ListComponent

中执行此类操作

this._router.navigate(['./', filter.params])

有效地路由到我们当前所在的路线,仅更新参数。这将是不错的(如果我们假设路线没有以任何方式嵌套)。

由于这似乎不可能,我在ListComponent

中尝试过类似的内容
ngOnInit(){

    this._activeRoute.url
    .subscribe(
      (data) => {

        this._url = "/" + data.map(urlPathWithParams => urlPathWithParams.path ).join("/");  
      }
    )

  } 

基本上继续,在启动时获取当前url并将其存储在本地变量中,以便在此方法中过滤器更改时使用:

applyFilter(){
  this._router.navigate([this._url, filter.validParams]);
}

这似乎首先起作用,但如果我路由到继承自ListComponent的其他组件,则注入的_activeRouteActivatedRoute)将返回{的{ {1}} url ListComponent中可观察到{1}}。

我不确定我是否正确地走上正轨,但我也在寻找能够解决这个问题的不同方法的答案。

1 个答案:

答案 0 :(得分:1)

这似乎是RC5中的一个问题,修复被合并到主人。

https://github.com/angular/angular/commit/c7f3aa71fb4f8b8b3b69c1f6fb94883de992c743