私はAngular 2 HTTPを使用しており、コンポーネントは応答を購読しています。ただし、エラーが発生した場合、catchメソッドはエラーをサブスクライブされたコンポーネントに返しません。それは単にコンソールにスローされます。角度2エラー処理 - 購読したコンポーネントに送信
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;
}
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);
});
}
'handleError'関数は' catch'を動作させるために 'Observable'を返す必要があります。このリンクを参照してください:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/catch.md – eminlala