我有以下问题。想象一下Angular 2的单一服务:
validate() {
return this.http.get('api/validate', data); }
当我尝试使用上述API时,一切正常:
this.ValidationService.validate().subscribe(result => {
console.log('data returned from api', result);
});
,结果是一个对象:
{status: "success", data: {…}}
但是,让我发疯的是我正在尝试的时候:
this.ValidationService.validate().subscribe(result => {
console.log('data returned from api', result.data);
});
Typescript抱怨没有数据属性,并且存在编译错误!同时从下面我得到true
...
this.ValidationService.validate().subscribe(result => {
console.log('data returned from api', result.hasOwnProperty('data'));
});
我也试过result['data']
。它没有用。对可能发生的事情有任何想法?
答案 0 :(得分:1)
我想你错过了.json()来获得回复的主体:
this.ValidationService.validate().subscribe(result => {
console.log('data returned from api', result.json());
});
如果是这样我认为最好将.json()移动到您的服务中,以便代码中没有多少.json():
validate() {
return this.http.get('api/validate', data).map(res => res.json());
}
答案 1 :(得分:0)
试试这个,加?防止错误:
console.log('data returned from api', result?.data);
答案 2 :(得分:0)
尝试为结果添加任意类型,如下所示:
this.ValidationService.validate().subscribe((result:any) => {
您可能还希望为回复添加正确的输入,这将使您的代码更具可读性和可维护性