在我们的 Angular 应用中,我们有一个DropDown组件,该组件填充了多年。
选择一年后,我们需要更改路由器网址,如下所示:
URL /客户/的 2015
URL /客户/的 2016
URL /客户/的 2017
OR
URL /客户/一些-其它页面/的 2015
URL /客户/一些-其它页面/的 2016
URL /客户/一些-其它页面/的 2017
这有效,但我们将下拉列表的更改事件委托给需要它的组件。没关系!
但是,如果组件单独改变路线,我们认为这将使我们的生活更轻松。
我们尝试过:
public onChange(year): void {
this.router.([this.router.url, year]);
}
这仅适用于第一次,第二次网址如下所示:
URL /客户/一些-其它页面/的二千○一十八分之二千○十七
第三次:
URL /客户/一些-其它页面/的 2017/2018/2019
依旧......
问题:
那么,如何获取路由器的参数并将其替换为当前的参数?
答案 0 :(得分:1)
以下是使用查询参数的一些信息:
然后,您可以使用以下语法读取查询参数:
ngOnInit(): void {
this.listFilter = this.route.snapshot.queryParamMap.get('filterBy') || '';
this.showImage = this.route.snapshot.queryParamMap.get('showImage') === 'true';
. . .
}
或者,如果您希望在查询参数更改时收到通知,您可以执行以下操作:
ngOnInit(): void {
this.route.queryParamMap.subscribe(params => this.filterBy = params.get('filterBy'));
. . .
}
注意:来自文档:
仍有两个较旧的属性。他们的能力不如 他们的替代品,气馁,并可能在将来被弃用 角度版本。
params - 包含必需和可选的Observable 特定于路线的参数。改为使用paramMap。
queryParams - 包含查询参数的Observable 适用于所有路线。请改用queryParamMap。