我正在尝试执行以下操作:
以非常抽象的术语,我有一个ListComponent
和一个FilterComponent
。 ListComponent
包含资源列表,过滤器的工作是过滤这些资源(过滤器是与列表一起显示的实际组件,由过滤器模型支持)。
我希望过滤器可以在多个不同的路径上工作,因为ListComponent
位于多个位置。挑战是从过滤器中收集过滤器属性并将其反映在路径的查询参数中,因此如果/list
是当前路线并且我们更改过滤器组件的属性(通过单击某些过滤器,我们称他们为foo
和bar
),路线应更改为/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
的其他组件,则注入的_activeRoute
(ActivatedRoute
)将返回{的{ {1}} url
ListComponent
中可观察到{1}}。
我不确定我是否正确地走上正轨,但我也在寻找能够解决这个问题的不同方法的答案。
答案 0 :(得分:1)
这似乎是RC5中的一个问题,修复被合并到主人。
https://github.com/angular/angular/commit/c7f3aa71fb4f8b8b3b69c1f6fb94883de992c743