如何从Observable获取两次数据

时间:2018-03-28 11:48:03

标签: angular rxjs observable

我需要在服务和组件中的请求之后获取数据。我找到了一种方法,只能通过subscription.add method.

直接从服务中提取变量

服务代码:

itemList: any[];
constructor(private http: HttpClient){}
getData(){
  return this.http.get('items.json').subscribe(data => {
    this.itemList = data['itemList'];
  });
}

组件代码:

items: any[];
constructor(private dataService :DataService) { }
ngOnInit() {
}
getItems() {
  this.dataService.getData().add(data => { 
    this.items = this.dataService.itemList;
});
}

有没有办法通过重新订阅或类似的方式来做到这一点 ,因为如果你试图在add块中提取数据,那么它就会出现问题

add(data => { 
  this.items = data['itemList'];
  console.log(data);
});

2 个答案:

答案 0 :(得分:0)

我要做的是,先简单地传递请求

getData(): Observable<any>{
  return this.http.get('items.json);
}

并在组件中处理服务

getItems() {
  this.dataService.getData().subscribe(response => { 
    <do whatever you have to do with response items>
    this.dataService.setItemList(response);
});

在dataService:

public setItemList(items: any){
   this.itemList = data['itemList']; // or anything you need to do with the original data
}

答案 1 :(得分:0)

您可以do使用DataService代替subscribe。并在控制器中订阅

...
// Service
getData(){
  return this.http.get('items.json').do(data => {
    this.itemList = data['itemList'];
  });
}

...
// Component
getItems() {
  this.dataService.getData().subscribe(data => { 
    this.items = this.dataService.itemList;
  });
}