У меня есть компонент, который прослушивает Observable, который возвращает информацию, основанную на имени, указанном в строке.
Я хотел бы предоставить имя для Observable, передав переменную параметра Activated Route в запросе GET. Проблема заключается в том, что когда я использую переменную в своем GET-запросе в службе, URL-адрес не определяет мою переменную, и запрос возвращает значение «ноль».
Я подозреваю, что моя проблема заключается в моем ngOnit в моем компоненте. playerCode
в моем getPlayer(playerCode)
.. Я просто не уверен, почему ..
Если мой playerCode - строка, и я добавляю это к своему URL в запросе, разве это не должно работать?
В моем компоненте:
ngOnInit() {
const playerCode = this.route.snapshot.paramMap.get('player');
this.playerService.getPlayer(playerCode).pipe(
switchMap( player => {
let playerData = player["data"][0];
let anotherID = playerData.id;
return this.playerService.getSeasonStats(anotherID);
}))
.subscribe(id => this.player = id);
}
Мой сервис, использующий строковую переменную в URL:
getPlayer(player: string):Observable<Player[]> {
let getHeaders = new HttpHeaders({'Authorization':'API_Key', 'Accept': 'application/vnd.api+json'});
return this.http.get<Player[]>(`https://api.pubg.com/shards/steam/players?filter[playerNames]=`+ player, { observe:'body', responseType: 'json', headers: getHeaders, });
}
Мой компонент маршрутизации приложений
const routes: Routes = [
{ path: 'players', component: CareerComponent },
{ path: 'players/:player', component: CareerComponent },
{ path: '**', redirectTo: 'players' }