我们需要一种方法来处理全局角度误差包括不正确的HTTP调用像401或500处理全局角度4个错误
我看到有映入全球角度例外的ErrorHandle类,但该类不检测不正确的(例如状态500)http调用。那么是否有另一种方法来处理这两种类型的错误,或者我需要从他们到另一个定制服务创建某种类型的委派?
我们需要一种方法来处理全局角度误差包括不正确的HTTP调用像401或500处理全局角度4个错误
我看到有映入全球角度例外的ErrorHandle类,但该类不检测不正确的(例如状态500)http调用。那么是否有另一种方法来处理这两种类型的错误,或者我需要从他们到另一个定制服务创建某种类型的委派?
当您使用的是Angular 4时,您可以使用新的HttpClient
,并简单地为您的HTTP响应编写拦截器。 在Angular docs for HttpClient更多的细节和例子。
编辑:添加例子
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http'
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/do';
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).do(event => {}, err => {
if (err instanceof HttpErrorResponse && err.status == 401) {
// handle 401 errors
}
if (err instanceof HttpErrorResponse && err.status == 500) {
// handle 500 errors
}
});
}
}
它很多作为评论分类,请举例说明 –
有没有一种方法,拦截器可以抛出一个异常,然后全局ErrorHandler可以处理该错误? 例如“在一些”if“语句中抛出新的错误('err')”? –
当你的服务返回的观察到后部,无论你称它从你可以做这样的事情:在_apiErrorHandler可以
this.myService.doSomething().subscribe(
successfulPayload => { //do stuff with the good response },
error => this._apiErrorHandler(error));
然后将错误发送到商店,以便其他组件可以做任何他们需要做的事情,知道发生了错误。
private _apiErrorHandler(payload) {
this.store.dispatch({ type: 'API_ERROR', payload });
}
因为这是你知道自己不会有这样的状态码的API错误500等有效载荷有一个状态属性和状态文本属性(payload.status和payload.statusText)
化妆使用'角度拦截器'[链接](https://angular.io/api/common/http/HttpInterceptor) –