首页 > 解决方案 > HttpResponse“TypeError:无法读取未定义的属性‘消息’”

问题描述

我需要从 http 响应中访问“状态”、“消息”等。在 chrome 浏览器的“网络”选项卡中,我确实看到了我需要的一切。但是在“订阅”方法中,返回的错误没有定义这些属性。

deleteBranchByID(branchID: string) {
    return this.http.delete(this.baseUrl + 'api/Branch/DeleteBranchByID/' + branchID);
  }

“错误”不包含我需要的属性...

onDelete(branchID) {
    this.branchesService.deleteBranchByID(branchID)
      .subscribe(
        (res) => {
          console.log(res);
        },
        (error) => {
          console.log(error);
        }
      );
  }

...相反,console.log(error) 返回:

TypeError: Cannot read property 'message' of undefined
    at CatchSubscriber.selector (common-auth.js:945)
    at CatchSubscriber.error (catchError.js:29)
    at CatchSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)
    at InnerSubscriber.error (Subscriber.js:55)
    at Observable._Observable__WEBPACK_IMPORTED_MODULE_0__.Observable.scheduler.schedule.error.error [as _subscribe] (throwError.js:4)
    at Observable._trySubscribe (Observable.js:42)
    at Observable.subscribe (Observable.js:28)
    at subscribeTo.js:20
    at subscribeToResult (subscribeToResult.js:7)

这些相同的方法在另一个项目中完美地工作,但不是在这里。

标签: angular

解决方案


添加observe: 'response'对象以status从响应中访问。

deleteBranchByID(branchID: string) {
    return this.http.delete(this.baseUrl + 'api/Branch/DeleteBranchByID/' + branchID, { observe: 'response' });
  }

我认为你可能会得到一个200状态码,但响应是空的,因此 http 调用失败,但这只是一个猜测。

查看内容以了解如何从响应中获取标头、状态代码等,而不仅仅是从正文中获取。


推荐阅读