使用路线解析器处理错误

时间:2017-10-02 12:24:24

标签: angular angular-routing

我正在使用简单的路由解析器在用户访问页面之前加载数据:

resolve(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<any>|Promise<any>|any {
      return this.summaryService.getAllAnalytics();
  }

如何处理API调用失败时可能发生的错误(连接错误或任何其他原因),阻止用户路由到请求的页面,并显示错误?

目前,当我的API出现问题时,我收到以下错误:

Error: Uncaught (in promise): [object Object]

并且页面保持不变。我无法怎样处理我得到的错误。

1 个答案:

答案 0 :(得分:0)

如果您的服务返回Promise,那么您可以使用Promise.prototype.catch方法,如果它返回Observable,则使用Rx.Observable.catch

在内部捕获中,您可以记录错误或/并重定向到错误页面或/并重定向到其他地方......

如果是Observable,它看起来像这样:

import { of } from "rxjs/observable/of";
import 'rxjs/add/operator/catch';
...
resolve(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<any>|Promise<any>|any {
      return this.summaryService.getAllAnalytics()
          .catch(err => {
              console.error(err);
              return of();
          });
  }