Ich verwende Angular 2 HTTP und habe eine Komponente, die die Antwort abonniert. Tritt jedoch ein Fehler auf, gibt die Fangmethode den Fehler nicht an die abonnierte Komponente zurück. Es wirft es einfach in die Konsole.Angular 2-Fehlerbehandlung - An abonnierte Komponente senden
saveFinalize(fcData: LastForecastInterface) {
let responseData = JSON.stringify(fcData);
let body = responseData;
const headers = new Headers();
headers.append('Content-Type', 'application/json;charset=UTF-8');
return this.http.post('/saveFinalize', body, { headers: headers })
.map((data: Response) => data.json())
.catch(this.handleError);
}
public handleError(error: Response | any) {
console.log('err: ', error)
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
// return Observable.throw(errMsg);
return errMsg;
}
Und meine abonnierten Komponente erhält keine Antwort
saveFinalize() {
this.loadingData = true;
return this.httpService.saveFinalize(this.getFc.fcData)
.subscribe(response => {
this.loadingData = false;
console.log(response);
let saveResponse = response.success ? 'Successfully Saved Finalized!' : 'Error Saving Finalized! - ' + response.message;
let respType = response.success ? 'success' : 'danger';
this.alertSvc.showAlert(saveResponse, respType);
});
}
Die 'handleError'-Funktion muss ein' Observable' zurückgeben, damit 'catch' funktioniert. Sehen Sie diesen Link: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/catch.md – eminlala