(Angular 2/4/5/6) Получите ответ об ошибке от сервера после подписки на услугу - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь проверить мой отп.Основываясь на ответе об ошибке, возвращенном сервером (либо несоответствие OTP, либо срок действия OTP истек), я хотел бы соответственно отобразить сообщение об ошибке.Однако я не уверен, как получить ответ об ошибке с сервера

enter image description here

В настоящее время мой console.log получает строку из моего otpService, говоря"Http error response для http://xxx/verify: 400 Bad Request", так как мне вместо этого получить {"Err": "otp expired"}?

otp.component.ts

this.otpService
      .verify(id, this.paymentForm.controls.otp.value)
      .subscribe(
        response => {
          this.router.navigate(["success"]);
        },
        // if otp has error, show error message
        error => {
          console.log(error); //this only gives me 400 Bad Request
        },
      );

otp.service.ts

verify(id: string, token: string): Observable<{}> {
const req = { id: id, otp: otp};
return this.http
  .put<{}>(appConfig.apiBasePath + "verify", req, {
    headers: new HttpHeaders().set(
      "Content-Type",
      "application/json; charset=utf-8",
    ),
  })
  .pipe(
    catchError(this.handleError),
  );

} ​​

Благодарим Вас за помощь!

1 Ответ

0 голосов
/ 29 января 2019
private errorList: string = '';    

public handleError(error) {
        if (error.error) {
          if (error.error instanceof Array) {
            for (var i = 0; i < error.error.length; i++) {
              if (i === 0) {
                this.errorList = error.error[i].description;
              }
              else {
                this.errorList += " " + error.error[i].description;
              }
            }
            return Observable.throw(this.errorList);
          }
          else {
            return Observable.throw(error.error);
          }
        }
        else {
          return Observable.throw(error.message);
        }
      }

Просто используйте этот метод, чтобы вернуть ошибку от службы

...