我有以下功能:
getNetworkByName(prefix: string): Observable<Network[]> {
return this.http.get<Network[]>(this.Url + '/networks/search?name-prefix=' + prefix)
.catch(handleError); }
和
getNetwork(id: number): Observable<Network> {
return this.http.get<Network>(this.Url + '/networks/' + id)
.catch(handleError); }
我想有另一个功能,如
getNetworkByNameAndId(prefix: string | number): observable<network[]>
合并前一个函数的结果。我尝试过合并运算符但由于不同的类型而无效。
如果不订阅这些功能,如何有效地解决这个问题。我需要在前端解决这个问题。在某些情况下,我的网络名称可能是1&amp; 1,网络ID也可能在内部1,所以我想根据名称和ID执行搜索。我做了这样的事情:
return this.getNetworkByName(prefix.toString()).pipe(merge(this.getNetwork(parseInt(prefix,10)));
我收到错误
Type 'Observable<Network | Network[]>' is not assignable to type 'Observable<Network[]>'.
此致
答案 0 :(得分:1)
也许是这样的:
getNetworkByNameAndId(name : string, id : number): Observable<Network[]> {
return Observable.forkJoin(
getNetworkByName(name),
getNetwork(id)
).map(([a, b]) => [...a, b]);
}