Angular2 POST Observable Request返回一个不可读的JSON对象

我使用一个Angular2的POST请求与Observable到Node API。 我不断收到一个奇怪的JSON对象作为响应。

来自Node API应用程序的响应 – 通过Chrome控制台:

{"_isScalar":false,"source":{"_isScalar":false,"source": {"_isScalar":false,"source":{"_isScalar":false},"operator": {"delay":500,"scheduler":{"actions":[],"active":false}}},"operator": {}},"operator":{"caught":"[Circular]"}} 

Angular2代码:

 login2(): Observable<any> { this.url = 'http://localhost:3080/user/login'; this.obj.email = 'jhon.doe@foo.de'; this.obj.password = 'pass'; let formObj = this.form.getRawValue(); let serializedForm = JSON.stringify(formObj); let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); var obsRequest = this.http.post(this.url, this.obj, options) .map(res => res.json()) .catch( (error: any) => Observable.throw(error.json().error || 'Server error') ); console.log(JSON.stringify(obsRequest, this.avoidCircular(obsRequest))); return obsRequest; } 

PS avoidCircular是javaScript内置avoidCircular的额外解决方法,当我不使用它时会得到以下错误:

 TypeError: Converting circular structure to JSON 

avoidCircual代码:

 avoidCircular(objCens) { var i = 0; return function(k, v) { if(i !== 0 && typeof(objCens) === 'object' && typeof(v) == 'object' && objCens == v) return '[Circular]'; if(i >= 29) return '[Unknown]'; ++i; return v; } } 

API调用通过邮差工作正常!

任何想法如何解决这个问题?

obsRequest不是来自您的请求的响应,而是请求可观察的。 为了收到回复,你需要subscribe它。

 var obsRequest = this.http.post(this.url, this.obj, options) .map(res => res.json()) .catch( (error: any) => Observable.throw(error.json().error || 'Server error') ); obsRequest.subscribe((response)=> console.log(response)); 

我build议你阅读官方文档的http模块: https : //angular.io/guide/http