В учебнике Angular .io («Приложение Tour of Heroes») они используют этот код для возврата массива объектов из службы:
https://angular.io/tutorial/toh-pt6#tap -into-the -observable
/** GET heroes from the server */
getHeroes (): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
tap(_ => this.log('fetched heroes')),
catchError(this.handleError<Hero[]>('getHeroes', []))
);
}
Однако, если вам нужно вернуть наблюдаемый с один результат , они предполагают, что API предоставляет эту услугу (т. е. API принимает параметр id
).
Однако что если вместо этого вы хотите, чтобы ваша служба приняла параметр id
, а затем фильтр результаты выполнения вышеуказанной функции:
Например, в псевдокоде:
getHero(id: number): Observable<Hero> {
// call getHeroes (as above)
// filter the results to return only the here who's id property matches the id parameter;
this.getHeroes().[filter this somehow, and return an observable with just the match]
}
Как вы выполняете sh это?
Извините заранее - я нашел подобные вопросы здесь, но либо они полагаются на более старую версию Angular / Rx JS, либо они не совсем верны учебнику (например, функция возвращает массив вместо наблюдаемого. ..)