将一种类型的Observable数组映射到另一种类型的Observable数组

时间:2017-11-07 15:37:48

标签: arrays angular rxjs observable

我正在研究从REST服务获取数据的数据服务。有没有办法接收一个类型的对象的数组的Observable但返回一个不同类型的数组的Observable?我认为这就是mergeMap的作用,但我无法理解如何实现这一目标。

这样的事情:

@Injectable()
export class MyDataService {
  constructor(private http: HttpClient) { }

  getThings(): Observable<B[]> {
    return this.http.get<A[]>(url)
    mergeMap(x => [x + <B>{foo: x.bar});
  }
}

在C#中,我只使用LINQ表达式来选择一个新对象。我如何在Angular中做同样的事情?也许服务只是简单地返回类型A的Observable数组,订阅服务的消费者可以以某种方式处理映射?这会是更好的方法吗?

1 个答案:

答案 0 :(得分:1)

取决于您要映射的内容/位置。例如,您可以键入提示.map运算符:

.map<A, B>(v => /* transform A to B */)

您可以对mergeMap执行相同操作:

.mergeMap<A, B>(v => /* transform A to Observable<B> */)