Возврат наблюдаемого одного элемента из http.get в Angular 5 - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть служба, которая отправляет запросы в web-api-память. Служба включает в себя метод, который я хочу запросить (через строку запроса) API для одного элемента.

Независимо от указания одного элемента в общем методе http.get мне возвращается массив.

Это отличается от того, если я вызываю API для одного элемента с использованием идентификатора, а не запроса, когда мне возвращается только один элемент.

this.http.get<ITrack>(`api/tracks/1`)
  .subscribe(track => console.log(JSON.stringify(track)));

возвращает

{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}

Где как

this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
  .subscribe(track => console.log(JSON.stringify(track)));

возвращает

[{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}]

Я могу получить второй вызов, чтобы вернуть только элемент со следующим:

this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.pipe(
  map(t => t[0])
)
.subscribe(track => console.log(JSON.stringify(track)));

Однако я не могу использовать методы типа single или first, так как компилятор ожидает возвращаемый тип ITrack.

Как правильно вернуть сюда один товар?

1 Ответ

2 голосов
/ 02 апреля 2019

Таким образом, если конечная точка всегда возвращает список, вызовите метод get, набранный с помощью ITrack -array.

Просто замените .get<ITrack>(...) на .get<ITrack[]>(...).

...