我在理解如何正确使用Angular 2中的observable时遇到了一些麻烦。我有以下查询:
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:3000/admin/is-admin.json', options)
.map(res => res)
.catch(this.handleError); }
API调用返回一个布尔值true或undefined,但我无法从函数中返回此值。目前它返回一个对象,我希望它直接返回布尔值。当我将地图线更改为:
时 .map(res => JSON.parse(res))
如果我将其更改为:
,我会收到JSON解析错误 .map(res => res.data)
我收到的错误是数据在响应对象上不存在。有人知道我应该怎么做吗?答案可能很基本,但我已经找了很长时间了......
答案 0 :(得分:0)
我将通过获取响应有效负载的文本值来使用以下内容:
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:3000/admin/is-admin.json', options)
.map(res => { // <-----
let responsePayload = res.text();
return (responsePayload != null) ? Boolean(res.text()) : responsePayload;
}))
.catch(this.handleError);
您也可以尝试调用json
方法:
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:3000/admin/is-admin.json', options)
.map(res => res.json()) // <-----
.catch(this.handleError);
答案 1 :(得分:0)
您需要订阅可观察的
getData() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:3000/admin/is-admin.json', options)
.map(res => res.json)
.catch(this.handleError);
}
otherFunc() {
this.getData().subscribe(val => this.data = val);
}
或
<div>
{{data | json}}
</div>
constructor(){ this.data = getData(); }