在Angular的rxjs订阅方法中捕获错误消息文本

时间:2019-05-26 11:19:33

标签: node.js angular express rxjs

我在TypeScript中有一个nodeJS express服务器应用程序。发生错误时,我想向其中添加一些文本,然后在客户端Angular应用程序中读取它。

NodeJS服务器,表达代码:

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.statuserror.message这样的默认属性有效。但是没有我想要的自定义消息。

也许有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

可以使用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
  }));