开发者问题收集

将对象推送到可观察订阅的数组中

2020-04-14
1518

我有两个请求,它们具有相同的对象结果(“Data”)。我将获取两个响应,并将所有结果放入数组(“Data[]”)。示例:

在我的服务中:

  getData1(): Observable<Data> {
    return this.http
      .get<Data>(`${url}/data`):

  }

  getData2(): Observable<Data> {
    return this.http
      .get<Data>(`${url}/data`):

  }

如何获取两个方法的结果,并将所有结果放入我的组件的 data[] 中?

更新解决方案

服务

  getData1(): Observable<Data> {
    return this.http
      .get<Data>(`${url}/data`):

  }

  getData2(): Observable<Data> {
    return this.http
      .get<Data>(`${url}/data`):

  }

 getDatas(): Observable<GetData[]> {
   return forkJoin([this.getData1(), this.getData2()]);
  }

组件

 getDatas: GetData[];
 ngOnInit() {
    this.dataService.getDatas().subscribe(x =>  this.getDatas= x);
  }

我可以在 *ngFor="let data of datas" 上创建一个循环

它有效

1个回答

使用 ForkJoin 如下:

 getData(): Observable<Data[]> {
   const req = [];
   req.push(this.http.get<Data>(url_1));
   req.push(this.http.get<Data>(url_2));
   return forkJoin(req);
 }

这将以 数组 形式返回响应,其中将提供两个 url 的响应

Shashank Vivek
2020-04-14