让我们以下面的英雄代码来获取英雄:
/** 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 []并且它不是逐个迭代英雄。
答案 0 :(得分:2)
Map
操纵您当前获得的Observable
数据,而不是其中的每个数据。而且因为你在阵列中得到了你的英雄,而不是一个接一个,你将map
内的整个数组作为单个数据。
您需要在结果上使用Array.map
,创建映射数组并将其传递给下一个。
RxJS 5 现在使用do
代替tap
。