Слияние двух наблюдаемых разных типов - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующие функции:

  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 и 1, также сетевой идентификатор может быть внутренним 1, поэтому я хотел бы выполнить поиск на основе имени и идентификатора.Я сделал что-то вроде этого:

return this.getNetworkByName(prefix.toString()).pipe(merge(this.getNetwork(parseInt(prefix,10))); 

Я получаю сообщение об ошибке

Type 'Observable<Network | Network[]>' is not assignable to type 'Observable<Network[]>'.

С уважением

1 Ответ

0 голосов
/ 24 мая 2018

Может быть, что-то вроде этого:

getNetworkByNameAndId(name : string, id : number): Observable<Network[]> {
    return Observable.forkJoin(
        getNetworkByName(name),
        getNetwork(id)
    ).map(([a, b]) => [...a, b]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...