1

Ich habe einen HttpInterceptor, um Fehler abzufangen und sie in einem modalen anzuzeigen. Neben dem Fehlercode und der Nachricht möchte ich auch den Hauptteil der Antwort zeigen, der tatsächlich eine genauere Beschreibung des Fehlers enthält (z. B. bei einem 500 internen Serverfehler). Wie erreiche ich das in eckigen? (Ich benutze Version 4.3.6.)Zugriff auf HTTP-Fehlerantworttext von HttpInterceptor in Angular

Ich schaute bereits verwandte Fragen, aber Antworten wie HttpErrorResponse._body oder ähnliches funktionieren nicht für mich. Beim Überprüfen der Fehlerantwort in der Konsole wird HttpErrorResponse.error ebenfalls auf null gesetzt.

Hier ist, wie mein Abfangjäger zur Zeit aussieht:

@Injectable() 
export class HttpErrorInterceptor implements HttpInterceptor { 
    public constructor(private httpErrorService: HttpErrorService) { } 

    public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    return next.handle(req).do(event => { 
    }, (error: HttpErrorResponse) => { 
     console.log('HTTPERROR INTERCEPTOR'); 
     console.log(error); 
     if (error.status >= 400) { 
     this.httpErrorService.onError(error); 
     } 
    }); 
    } 
} 

Antwort

1

Der Körper in der error Eigenschaft zur Verfügung stehen sollte, so:

return next.handle(req).do(event => { 
}, (error: HttpErrorResponse) => { 
    console.log(error.error); // body 
    ... 
}); 

Hier ist der Kern der Implementierung from the sources:

if (ok) { 
    ... 
} else { 
    // An unsuccessful request is delivered on the error channel. 
    observer.error(new HttpErrorResponse({ 
    // The error in this case is the response body (error from the server). 
    error: body, <-------------------- 
    headers, 
    status, 
    statusText, 
    url: url || undefined, 
    })); 
} 

Um mehr über Mechanik hinter Abfangjägern zu erfahren r ead:

+1

Dank! Es funktioniert tatsächlich jetzt. Ich war tatsächlich auf Version 4.3.6 (auch in meiner ursprünglichen Frage aktualisiert) und dort war der Fehler null. Aber jetzt auf Version 4.4.6 funktioniert alles gut. – Severin

+0

@Severin, Gern geschehen) –

Verwandte Themen