我正在研究从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数组,订阅服务的消费者可以以某种方式处理映射?这会是更好的方法吗?
答案 0 :(得分:1)
取决于您要映射的内容/位置。例如,您可以键入提示.map
运算符:
.map<A, B>(v => /* transform A to B */)
您可以对mergeMap
执行相同操作:
.mergeMap<A, B>(v => /* transform A to Observable<B> */)