Property 'includes' is missing in type 

2019-06-04 13:19发布

I have been trying to get an array of objects from node to a service onInit and assign it to component. I am able to view data in service but when i try to assign to a variable in component, I get below error. I have included my code as well. Please favour on this.All i need is to just take that array from service and assign it to finallist in component.

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'.

My code is below: 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条回答
不美不萌又怎样
2楼-- · 2019-06-04 13:32

You should be using a map operator to convert the response into json type

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

Note : <Type> is used for strict typing

查看更多
在下西门庆
3楼-- · 2019-06-04 13:32

See my answer below. It explains to you how to get your data from the server, to service, and finally to component. Receiving Jason instead of html. I am using mongodB but your backend may be different. Hope this helps.

查看更多
我想做一个坏孩纸
4楼-- · 2019-06-04 13:34

subscribe returns Subscription object, this is not what you have looking for.

Try something like this:

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);
}
查看更多
登录 后发表回答