我正在使用简单的路由解析器在用户访问页面之前加载数据:
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any>|Promise<any>|any {
return this.summaryService.getAllAnalytics();
}
如何处理API调用失败时可能发生的错误(连接错误或任何其他原因),阻止用户路由到请求的页面,并显示错误?
目前,当我的API出现问题时,我收到以下错误:
Error: Uncaught (in promise): [object Object]
并且页面保持不变。我无法怎样处理我得到的错误。
答案 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();
});
}