Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么服务错误作为字符串而不是json对象发送回来?_Angular_Typescript_Angular2 Services - Fatal编程技术网

Angular 为什么服务错误作为字符串而不是json对象发送回来?

Angular 为什么服务错误作为字符串而不是json对象发送回来?,angular,typescript,angular2-services,Angular,Typescript,Angular2 Services,我有简单的服务: getCommandResult(fullCommand: string): Observable<any> { return this.http.post(this.callUrl, requestBody) .map(this.extractData) .catch(this.handleError); } private extractData(res: Response) { let body = res.

我有简单的
服务

getCommandResult(fullCommand: string): Observable<any> {

    return this.http.post(this.callUrl, requestBody)
      .map(this.extractData)
      .catch(this.handleError);
  }

  private extractData(res: Response) {
    let body = res.json();
    return body || { };
  }
  private handleError (error: Response | any) {
    return error.json();
  }
当我从服务中得到错误时,我想返回我得到的错误对象,但我得到的是一个包含以下消息的字符串:

"You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."
我试图理解为什么响应工作正常,我得到了预期的对象。但出错时,我没有得到相同的对象,只有字符串和消息。

请检查此项

简言之,
catch
用于继续一个可观察序列,并将下一个可观察序列传递给它。在您的示例中,您没有向
catch
传递可观察对象


根据代码的外观,您应该只删除带有catch的行(因此会出现错误)。

handleError
应该返回一个可观察的,而不是一个对象(如消息所示)

所以你的代码应该是

private handleError (error: Response | any) {
  return Observable.throw(error.json());
}

您能在不使用
.catch
的情况下尝试它吗?返回Observable.throw();是否在控制台404中写入未找到错误。是否有方法避免该错误?
private handleError (error: Response | any) {
  return Observable.throw(error.json());
}