首页 > 解决方案 > 角度组合来自不同方法的数据

问题描述

我有来自三个不同服务的数据,我想将来自所有服务的数据组合成一种方法

this.data1 = this.activity1Service.getAllMonth(); 
this.data2 = this.activity2Service.getAllMonth();
this.data3 = this.activity3Service.getAllMonth();

this.alldata =  concat (this.data1,this.data2,this.data3); 

并作为 Observable 调用

GetAllData(): Observable<Data[]>{


  return (this.alldata);

  }

然后也许做 ngOnInit()


ngOnInit() {

    this.dataService.getAllData().subscribe(aldata => this.AllData = aldata);
  } 

我不确定如何将来自不同服务的数据组合成一种方法,任何人都可以帮忙。

标签: javascriptangularrxjsobservable

解决方案


我想你想要这样的东西:

import { Observable, combineLatest } from 'rxjs';
import { map } from 'rxjs/operators';

  getAllData(): Observable<any[]>{
    return combineLatest([
      this.activity1Service.getAllMonth(), 
      this.activity2Service.getAllMonth(), 
      this.activity3Service.getAllMonth()
    ]).pipe(map([data1, data2, data3] => [...data1, data2, data3]))
  }

combineLatest将结合每个可观察到的最新发出的值,同时map您可以有一些逻辑来根据需要映射数据。


推荐阅读