角度通过替换现有参数

时间:2017-07-05 15:50:16

标签: angular

在我们的 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

依旧......

问题:

那么,如何获取路由器的参数并将其替换为当前的参数?

1 个答案:

答案 0 :(得分:1)

以下是使用查询参数的一些信息:

enter image description here

然后,您可以使用以下语法读取查询参数:

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。