财产包括'类型'订阅'中缺少-angular2

时间:2017-08-20 13:37:51

标签: javascript angular angular2-services angular-http

我一直在尝试从节点到服务onInit获取一个对象数组,并将其分配给组件。我能够查看服务中的数据但是当我尝试分配给组件中的变量时,我得到以下错误。我也包含了我的代码。请关注此问题。我需要的是从服务中获取该数组并将其分配给组件中的finallist。

ERROR in 

    C:/Users/girija/Documents/animapp/src/app/components/list.component.ts (28,5): Type 'Subscription' is not assignable to type 'any[]'.
      Property 'includes' is missing in type 'Subscription'.

我的代码如下: app.service.ts:

   public finallist=[]
     getList(){
          return this.http.get('/api/list').subscribe(data=>{
             this.finallist=JSON.parse(data['_body']);
             return this.finallist;
        })
        }

app.component.ts:

  totallist=[];
     ngOnInit() {
        this.totallist=this.someService.getList();

      }

3 个答案:

答案 0 :(得分:3)

subscribe会返回Subscription个对象,这不是您所寻找的。

尝试这样的事情:

app.service.ts

getList(): Observable<any> {
  return this.http.get('/api/list').map(data => data['_body']);
}

app.component.ts

totallist=[];

ngOnInit() {
  this.someService.getList().subscribe(data => this.totallist = data);
}

答案 1 :(得分:1)

您应该使用map运算符将响应转换为json类型

getList(){
          return this.http.get('/api/list')
             .map(response=> <Type>response.json()) /////////
             .subscribe(data=>{
             this.finallist=JSON.parse(data['_body']);
             return this.finallist;
        })
        }

注意:<Type>用于严格打字

答案 2 :(得分:0)

请参阅下面的答案。它向您解释如何从服务器,服务,最后到组件获取数据。 Receiving Jason instead of html。我正在使用mongodB,但你的后端可能会有所不同。希望这会有所帮助。