Angular - Определение типа ошибки для HttpClient.post () - PullRequest
3 голосов
/ 12 февраля 2020

Можно ли установить тип ошибки возврата на HttpClient.post()? Я хочу заставить любого, кто собирается использовать этот сервис, использовать свойства, которые были определены в его ошибке interface

Пример:

// user.service.ts
    sendData(data: User) {
        return this.http
          .post<User>(`${BASE_ENDPOINT}/user`, data, {
            withCredentials: true
          })
      }

// user.component.ts
    this.user.sendData(null)
      .subscribe(
        (success: User) => console.log(success),
        (error: ResponseErrorUser) => console.log(error)
      );

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете использовать Rx js операторы catchError и throwError , чтобы перехватить ошибку, сопоставить ее с пользовательским объектом и выбросить этот объект.

import { catchError, throwError } from 'rxjs/operators';
...
...
// user.service.ts
sendData(data: User) {
  return this.http
    .post<User>(`/api/v1/not-available`, data, {
      withCredentials: true
    })
    .pipe(
      catchError(err => {
        return throwError({
          statusCode: err.status,
          msg: err.message
        });
      })
    );
}

// user.component.ts
this.sendData(null).subscribe(
  (success: User) => console.log(success),
  (error: { statusCode: number; msg: string }) => console.error(error)
);

Custom Error object

Для получения дополнительной информации о пользовательской обработке ошибок, я бы порекомендовал вам go через этот блог .

Надеюсь, что это помогает. Ура и счастливого кодирования !!!

...