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

Mat*_*ney 5 typescript angular

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

当URL(查询参数)发生变化时,我试图让解析器重新获取数据.我该怎么做呢?

Gau*_*Dab 14

现在你可以在你的路线配置中使用它:

{
  path: '',
  resolve: {
    data : DataResolver,
  },
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
  component: MainComponent
}
Run Code Online (Sandbox Code Playgroud)

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

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

有关详细信息,请参阅doc


小智 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'];  
      }
   })
}
Run Code Online (Sandbox Code Playgroud)

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