sách gpt4 ai đã đi

angular - 如何在 queryParams 更改时重新运行解析器

In lại Tác giả: Space Dog 更新时间:2023-10-29 16:58:19 26 4
mua khóa gpt4 Nike

我已经研究了好几天了,但到目前为止还没有找到任何解决方案。

我有一个解析器服务,它应该返回一个 Có thể quan sát được :

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) : Observable|Promise{
return Observable.forkJoin(
this.http.get(first call with queryParam),
this.http.get(second call with queryParam),
);
}

我在组件中订阅了我的 ActivatedRoute 数据,它运行良好。

但是,正如您在上面的代码中看到的,我的组件有一个 queryParam,我的 API 调用依赖于这个 queryParam。当我手动更改它时,它不会再次“解析”路线。

我完全理解为什么,我阅读了文档。

有没有人有解决方法?在这种情况下,甚至可以订阅参数并返回一个 Observable 吗?

到目前为止我试过了,但它没有返回一个 Observable,所以它什么都不做:

this.router.events.subscribe(event => { 
if(event instanceof ResolveEnd){
// My previous Observable.forkJoin
}
});

谢谢 :)!

------------解决方案(感谢 Maximus): ------------

在路由中添加:

{
path: 'some path',
runGuardsAndResolvers: 'paramsOrQueryParamsChange'
...
}

然后,无需订阅路线事件或任何东西!魔法!

1 Câu trả lời

您可以为路由使用 runGuardsAndResolvers。官方文档是这样说的:

... defines when guards and resolvers will be run. By default they run only when the matrix parameters of the route change. When set to paramsOrQueryParamsChange they will also run when query params change. And when set to always, they will run every time.

所以在定义路由时你可以这样使用它:

{
path: 'some path',
runGuardsAndResolvers: 'paramsOrQueryParamsChange'
...
}

这应该重新运行守卫和解析器。

关于angular - 如何在 queryParams 更改时重新运行解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234826/

26 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com