Я довольно новичок в Observables, RxJS и Angular в целом. Я использую Angular 7 (Ionic 4) и с трудом нахожу решение проблемы ниже.
В моем приложении я делаю HTTP-запрос GET следующим образом:
myData = this.http.get("https://example.com/api").pipe(
map(results => {
return results["payload"]
})
)
Этот HTTP-запрос GET возвращает Observable myData
, который имеет следующие данные:
const data = [
{
"id": 1,
"name": "abc",
"description": "test1"
},
{
"id": 2,
"name": "def",
"description": "test2"
},
...
...
]
Я хочу добавить еще один ключ color
к каждому объекту в этом массиве следующим образом:
const data = [
{
"id": 1,
"name": "abc",
"description": "test1",
"color": "green"
},
{
"id": 2,
"name": "def",
"description": "test2",
"color": "red"
},
...
...
]
Вместо жесткого кодирования значения color
для каждого объекта, я хочу извлечь это значение ключа из функции getColor(id)
, которая находится в другой службе с именем colorService
.
Проблема в том, что colorService.getColor(id)
возвращает наблюдаемое.
Вопрос: Как подписаться на colorService.getColor(id)
для каждого объекта в моем массиве?
Я хочу сделать что-то вроде этого:
const data = [
{
"id": 1,
"name": "abc",
"description": "test1",
"color": <subscribe to colorService.getColor(1)>
},
{
"id": 2,
"name": "def",
"description": "test2",
"color": <subscribe to colorService.getColor(2)>
},
...
...
}
Надеюсь, я в порядке. Мои концепции довольно слабы на данный момент, поэтому извиняюсь, если некоторые из них звучат запутанно.