繁体   English   中英

如何捕获 Angular 6 解析器中的错误?

[英]How to catch errors in Angular 6 resolvers?

我找不到解决我的问题的方法:如果我使用解析器,如何在 Angular 6 中捕获错误? 我的解析器通常看起来很简单:

  resolve(activatedRoute: ActivatedRouteSnapshot) {
    return this.rs.getRessources(activatedRoute.queryParams['branch']);
  }

在给定的服务中,错误已经被捕获(由服务)——为什么在从解析器调用服务时这不起作用; 不是来自组件? 在加载组件之前检测解析器错误的最佳方法是什么?

感谢您的帮助

我注意到问题出在其他地方......服务的ErrorHandler被解析器调用无故障! 我的错! 但是

ErrorHandler内部,我试图导航到错误页面。 如果该服务被组件使用并且发生错误,则该方法工作正常。 如果该服务由解析器使用,则没有转发this.router.navigate(['/error']); 在我的ErrorHandler里面...

我认为那才是真正的问题。 但为什么?! 我如何使用this.router.navigate(['/error']); 从解析器调用时在ErrorHandler中?


解决方案:

折腾了很久终于发现错误了。 如果其他人有类似的问题,这是我的解决方案。

我忘了用return throwError(userMessage);抛出错误在我的ErrorHandler转发后。 现在this.router.navigate(['/error']); 也适用于解析器。

如果在加载组件之前出现问题,此解析器会抛出错误。

resolve(route: ActivatedRouteSnapshot): Observable<Initiative[]> {
    return this.actionItemService.getActionItems(route.params.id).pipe(
      catchError((error) => {
        this.alertifyService.error('Problem in resolving data');
        this.router.navigate(['/updateinitiative', route.params.id]);
        return of(null);
      })
    );
  }

这可能对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM