操纵Observable <hero []>

时间:2018-03-27 18:43:18

标签: angular

让我们以下面的英雄代码来获取英雄:

/** GET heroes from the server */
  getHeroes (): Observable<Hero[]> {
    return this.http.get<Hero[]>(this.heroesUrl)
      .pipe(
        tap(heroes => this.log(`fetched heroes`)),
        catchError(this.handleError('getHeroes', []))
      );
  }

我想操纵hero []的每个元素。我试过.map功能:

  getHeroes (): Observable<Hero[]> {
            return this.http.get<Hero[]>(this.heroesUrl)
              .pipe(
                tap(heroes => this.log(`fetched heroes`)),
                catchError(this.handleError('getHeroes', []))
              ).map((result) => {
                 console.log(result); // I am getting all the array and not iteration.
                 return  Object.assign(new Hero(), result);
             );
          }

但是我得到了所有数组或Hero []并且它不是逐个迭代英雄。

1 个答案:

答案 0 :(得分:2)

Map操纵您当前获得的Observable数据,而不是其中的每个数据。而且因为你在阵列中得到了你的英雄,而不是一个接一个,你将map内的整个数组作为单个数据。

您需要在结果上使用Array.map,创建映射数组并将其传递给下一个。

RxJS 5 现在使用do代替tap