У меня есть следующая реализация HTTP-перехватчиков с Angular ^4.3.6
.
import {Injectable} from "@angular/core";
import {
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpEvent,
HttpResponse,
HttpErrorResponse
} from "@angular/common/http";
import {Observable} from "rxjs/Observable";
import "rxjs/add/operator/do";
@Injectable()
export class InterceptorService implements HttpInterceptor {
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return next.handle(req).do(evt => {
console.log(evt);//this logs the success message properly
if (evt instanceof HttpResponse) {
//Keep going
}
},err => {
console.log(err);
//this logs the error but don't have useful info in it.
});
}
}
При успешном вызове http я получаю следующие члены evt
, которые действительны в первом console.log.
ok:true
status:200
statusText:"OK"
type:4
]
Но в случае сбоя у меня нет правильного кода состояния из блока err
во втором console.log, но есть следующее сообщение в консоли DEV от ZONE.js
zone.js: 2263 ОПЦИИ http://localhost:7001/coreRobo/neuralProcess 404 (не найдено)
name:"HttpErrorResponse"
ok:false
status:0
statusText:"Unknown Error"
Я не уверен, что мне здесь не хватает, но я хотел, чтобы этот статус давал мне что-то действительное, например, 404,403 или черт возьми 500, когда явно это то, что происходит.
Мне просто нужны эти значения, чтобы я мог показать правильное сообщение пользовательскому интерфейсу и помочь клиенту не паниковать в случае сбоя.
Любая помощь приветствуется. Заранее спасибо.