gpt4 book ai didi

返回 EMPTY 时,Angular 8 路由解析器不会取消路由导航

转载 作者:行者123 更新时间:2023-12-03 19:26:33 25 4
gpt4 key购买 nike

我正在添加一个 Angular 8 路由解析器来预取数据。在失败(出于任何原因)时,我返回一个 EMPTY 以取消路线导航。但是,当我对此进行测试时,我可以进入 catchError 块,它显示 toastr ,并返回 EMPTY,但并未取消路线导航。根据我读过的所有文章,这应该有效。想知道是否有人看到了我没有看到的东西。我只包含了 resolve 方法,因为所有其他配置都在工作。


resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Country[]> | Observable<never> {
return this.countryService.getCountries().pipe(
mergeMap((countries) => {
if (countries)
{
return of(countries);
}
return EMPTY;
}),
catchError(error => {
this.toasterService.pop('error', '', 'There was a problem prefetching the data required to submit a request. If the problem persists, please notify the administrator.');
return EMPTY;
}));
}

根据 Angular 文档,我希望此代码取消导航。

最佳答案

更新:我回到源代码 angular.io 并查看了 angular 团队如何实现解析器。他们有一段代码,所有其他博客文章都没有:

 resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Country[]> | Observable<never> {
return this.countryService.getCountries().pipe(
mergeMap((countries) => {
if (countries)
{
return of(countries);
}
this.router.navigate(['/']);//<----- THIS LINE, TO RE-DIRECT TO ANOTHER ROUTE
return EMPTY;
}),
catchError(error => {
this.toasterService.pop('error', '', 'There was a problem prefetching the data required to submit a request. If the problem persists, please notify the administrator.');
this.router.navigate(['/']);//<----- THIS LINE, TO RE-DIRECT TO ANOTHER ROUTE
return EMPTY;
}));
}

所以添加路由器重定向对我来说似乎是一个额外的步骤。特别是因为与 EMPTY 将取消导航直接矛盾。我错过了什么?

关于返回 EMPTY 时,Angular 8 路由解析器不会取消路由导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57079269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com