在查询参数更改时重新解析数据?

时间:2017-04-06 10:34:35

标签: angular typescript

在我的角度2项目中,我无法通过导航到相同的网址但使用不同的查询参数来重新加载页面。我在加载页面时使用解析预取数据。

我正在尝试让解析器在URL(查询参数)发生更改时重新获取数据。我该怎么做?

2 个答案:

答案 0 :(得分:11)

现在您可以在路线配置中使用此功能:

{
  path: '',
  resolve: {
    data : DataResolver,
  },
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
  component: MainComponent
}

在路由配置中传递'paramsOrQueryParamsChange'将在每个参数或queryParams更改时触发DataResolver。
您可以在MainComponent中获取解析器数据,如下所示:

ngOnInit() {
  this.activatedRoute.data.subscribe((resolversData) => {
     // is now triggered at each queryParams change
  })
}

see the doc for more info

答案 1 :(得分:0)

我认为你无法更改queryParam。我不知道这对你有帮助,但这是我的答案。

construtor(private route: ActivatedRoute) { }

ngOnInit() {

  this.route.snapshot.queryParams['something'];//when you snapshot and navigate to same url you can't get new query params, only for first initialization

  // to get new queryparams or url params also you need subscribe (for same url navigation)

  this.route.queryParams.subscribe({
      (queryParams: Params) => {
          this.yourParam = queryParams['something'];  
      }
   })
}

我认为你使用的是快照而不是Observable queryParams,这就是原因。