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

时间:2018-08-30 08:37:45

标签: angular service error-handling resolver

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

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

我正在ErrorHandler内导航到错误页面。如果该服务被组件使用并且发生错误,那将很好地工作。如果该服务由解析器使用,则我的this.router.navigate(['/error']);内的ErrorHandler不会转发...

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


解决方案:

经过很长时间,我终于发现了错误。如果其他人有类似的问题,这是我的解决方案。

在转发ErrorHandler后,我忘了抛出this.router.navigate(['/error']);错误。现在[x[0] for x in os.walk(dir)] 也可以与解析器一起使用。

答案 1 :(得分:0)

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

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);
      })
    );
  }

这可能对某人有所帮助。