Поймать текст сообщения об ошибке в методе подписки rxjs в Angular - PullRequest
0 голосов
/ 26 мая 2019

У меня есть серверное приложение nodeJS на TypeScript.При возникновении ошибки я хочу добавить к ней некоторый текст и прочитать его в клиентском приложении Angular.

NodeJS Server, экспресс-код:

import {
  Request,
  Response
} from 'express';

if (medewerker) {
  verifyPassword(medewerker.id, req.body.wachtwoord).then(isVerifiedPassword => {

    if (isVerifiedPassword) {

      .......

    } else {
      throw new Error('Wachtwoord niet juist ingevoerd');
    }

  }).catch(error => {
    console.log(error);
    res.status(401).json('I want to show this text: ' + error);
  })
}

Код клиента:

this.httpClient.put(this.url + 'medewerker/login', {
    'email': authData.userId,
    'wachtwoord': authData.password
  }, {
    headers: this.headertjes,
    withCredentials: true,
    observe: 'response',
    responseType: 'json'
  })
  .subscribe((data1: HttpResponse < MedewerkerTypeId > ) => {

    if (data1 != null) {
      .....
    }

  }, ((error: HttpErrorResponse) => {
    console.log(error.statusText) //here I want to grep and show my text.
  }));

Но я получаю сообщение об ошибке: неопределенное сообщение.Я перепробовал все варианты, но работают только свойства по умолчанию, такие как error.status и error.message.Но нет пользовательских сообщений, как я хочу.

Может быть, кто-то может мне помочь?

1 Ответ

0 голосов
/ 26 мая 2019

Доступ к телу ErrorResponse можно получить с помощью свойства error.

Измените свой код следующим образом:

this.httpClient.put(this.url + 'medewerker/login', {
    'email': authData.userId,
    'wachtwoord': authData.password
  }, {
    headers: this.headertjes,
    withCredentials: true,
    observe: 'response',
    responseType: 'json'
  })
  .subscribe((data1: HttpResponse < MedewerkerTypeId > ) => {

    if (data1 != null) {
      .....
    }

  }, ((error: HttpErrorResponse) => {
    console.log(error.error) //here error contains the text
  }));   
...