我一直在尝试从节点到服务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();
}
答案 0 :(得分:3)
subscribe
会返回Subscription
个对象,这不是您所寻找的。 p>
尝试这样的事情:
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,但你的后端可能会有所不同。希望这会有所帮助。