Я использую Angular6 HTTPClient в своем сервисе и хотел бы сохранить следующий и ошибочный путь Наблюдаемого для подписчика.
Например, мой компонент выглядит примерно так:
private myFun(query: string) {
this.myService.login(data).subscribe(next => {
// Do successful stuff
console.log('Got the data: ' + next);
},
err => {
// Handle all errors here
console.error('good luck next time')
});
}
Мой сервис использует канал вместе с картой и catchError.
private findData(in: string): Observable<string> {
return this.http.post<string>(self.url, '')
.pipe(
map( response => {
//Check the data is valid
if (this.dataValid(response)){
return this.convertedData(response);
} else {
throw new Error('failed parsing data');
}
}),
catchError(this.handleError)
);
}
Я могу обнаружить проблему синтаксического анализа и вызвать ошибку с помощью catchError, но я пытаюсь понять, как обработать catchError.
Обработчик ошибок выглядит следующим образом:
private handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
// Client Side Error
console.error('Client side error:', error.error.message);
} else if (error.message === 'failed parsing data') {
// Client Side Processing Error
console.error(error.message);
return throwError(error.message);
} else {
// Service Side Error
console.error(`Server returned code ${error.status}, ` + `body was: ${error.error}`);
}
// return an observable error message
return throwError('failed to contact server');
}
Он выполняет свою работу, но я не могу удержаться от мысли, что должен быть лучший, более Angular / RxJS способ сделать это.
Что я ожидал, так это попадание на путь «error.error instanceof ErrorEvent» обработчика ошибок.Я не понимаю, как обновляется параметр «error: HttpErrorResponse» - я просто выбрасываю «новую ошибку (« ошибка при разборе данных »);».
Любые советы / предложения?