У меня есть метод, прикрепленный к кнопке. Пользователь вводит свое имя в поле ввода, и при нажатии кнопки отображается информация об этом пользователе. Как я планирую это сделать, объясняется ниже.
Я пытаюсь передать значение из одной наблюдаемой в другую наблюдаемую. Значение, которое я пытаюсь получить из первой наблюдаемой, - это идентификатор, который затем используется во второй наблюдаемой.
Мой текущий способ сделать это - использовать оператор switchMap. Однако при передаче идентификатора из первой наблюдаемой во вторую я вижу «неопределенное» в своей консоли.
Я думаю, что либо я неправильно обращаюсь к идентификатору при вызове первой наблюдаемой. Или я не должен использовать switchMap ??
Это также странно, и я думал, что я был близок, потому что с помощью Object.keys (player) ['0'] я могу получить первый ключ объекта (Data). Но используя Object.keys (player) ['0']. Id;не определено: /
Это объект ответа, из которого я пытаюсь получить идентификатор:
функция щелчка в моем компоненте:
click() {
this.playerService.getPlayer(this.searchString).pipe(
switchMap(player => {
let ID = Object.keys(player)['0'];
let anotherID = ID['0'].id;
return this.playerService.getSeasonStats(anotherID);
}))
.subscribe(id => this.player = id)
}
Служба с методом getPlayer и методом getSeasonStats:
getPlayer(query: string):Observable<Player> {
let getHeaders = new HttpHeaders({'Authorization':'Bearer API_Key', 'Accept': 'application/vnd.api+json'});
return this.http.get<Player>(`https://api.com/shards/steam/players?filter[playerNames]=${query}`, {
observe:'body',
responseType: 'json',
headers: getHeaders
});
}
getSeasonStats(id: string):Observable<SeasonStats[]> {
let getHeaders = new HttpHeaders({'Authorization':'Bearer API_Key', 'Accept': 'application/vnd.api+json'});
return this.http.get<SeasonStats[]>(`https://api.com/shards/steam/players/${id}/seasons/division.bro.official.pc-2018-04`, {
observe:'body',
responseType: 'json',
headers: getHeaders
});
}