Ich möchte abfangen 401 und andere Fehler, um entsprechend zu reagieren. Das ist mein Interceptor:HttpInterceptor in Angular 4.3: Abfangen 400 Fehler Antworten
import { LoggingService } from './../logging/logging.service';
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 TwsHttpInterceptor implements HttpInterceptor {
constructor(private logger: LoggingService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.logger.logDebug(request);
return next.handle(request)
.do(event => {
if (event instanceof HttpResponse) {
this.logger.logDebug(event);
}
});
}
}
Während dies gut für 200 Anfragen arbeitet, es nicht abfangen der Fehler respsonses
Alles, was ich in den Chrome-Entwickler-Konsole zu sehen, ist dies:
zone.js:2616 GET http://localhost:8080/backend/rest/wrongurl 404 (Not Found)
Oder das
zone.js:2616 GET http://localhost:8080/backend/rest/url 401 (Unauthorized)
ich würde wie mein Abfangjäger, um damit umzugehen. Was vermisse ich ?
Ok, aber das gibt mir diese Fehlermeldung: [ts] Argumente vom Typ '(err: any) => void' ist zu Parametern des Typs nicht belegbar ‚(err: beliebig, gefangen: Observable >) => ObservableInput <{}> '. Typ 'void' ist nicht dem Typ 'ObservableInput <{}>' zuweisbar. –
Tim
Hinzufügen von "return Observable.throw (err);" behebt das Problem. Bearbeite deine Antwort und ich akzeptiere sie! – Tim
@tim so? Tut mir leid, ich habe es nicht getestet, bevor Sie posten :) – 0mpurdy