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());
}