我們需要一種方法來處理全局角度誤差包括不正確的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) –