1

我从页面顶部的导航栏组件执行搜索。从导航栏输入搜索条件时,我可以路由到我的“成员”组件页面,但是一旦我在“成员”组件上并更改查询参数并尝试再次运行 router.navigate(),我可以“ t 让 Angular 击中我的解析器。

这是我所做的以及我在导航调用上方尝试的操作,ReuseRoute 或 onSameUrlNavigation 似乎都无法在组件上再次点击我的解析器。

问题是——应该吗?因为也许我在某个地方还有其他问题!

// tried with no luck
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
// tried with no luck
this.router.onSameUrlNavigation = 'reload';
this.router.navigate(['/members'], {
  queryParams: {
    latitude: this.locationLatitude,
    longitude: this.locationLongitude,
    gender: this.gender,
    minAge: this.ageFrom,
    maxAge: this.ageTo,
    orderBy: this.orderBy
  }
});

4

3 回答 3

0

您将需要订阅查询参数更改

constructor(
    private activatedRoute: ActivatedRoute,
) { }

this.activatedRoute.queryParams.subscribe(params => {
    console.log(params);
    // logic after subscribing
});

所以基本上只要您更改 queryParams,它就会触发该订阅,您可以从那里运行您的逻辑

于 2020-01-20T05:23:59.477 回答
0

实际上,在这些情况下会调用解析器。您可以通过调试器简单地检查它。我最近遇到了类似的问题,我的解析器中有一个错误,而组件中有另一个错误(正如@smokey-dawson所写 - 我错过了对 route.data 的订阅)

于 2020-09-19T06:08:51.990 回答
0

路由可以将runGuardsAndResolvers属性设置always为始终在导航时运行守卫和解析器。默认情况下,它们在路由或路由参数更改时运行。

{
  path: 'some/path/:and/:id',
  component: MemberComponent,
  ...
  runGuardsAndResolvers: 'always'
}
于 2021-08-25T22:29:30.753 回答