Как мне получить доступ к ссылке, в которую я должен ввести несколько параметров в Angular (15)?
У меня есть следующая ссылка: "https://api.api-soccer.com/v1/championship/10/stages/168"
Я хочу получить доступ к объекту внутри идентификатора /168, но сначала мне нужно получить доступ к идентификатору /10.
Но я не знаю, как это сделать на Angular.
// urls.ts
const BASE_URL = "https://api.api-soccer.com/v1/"
export const CHAMPIONSHIP_URL = BASE_URL + 'championship'
export const CHAMPIONSHIP_BY_ID_URL = CHAMPIONSHIP_URL + '/'
// services.ts
getChampionshipById(champId: string) {
const httpOptions = {
headers: new HttpHeaders().set("Authorization","Bearer test_potatobearer123")
};
return this.http.get(CHAMPIONSHIP_BY_ID_URL + champId, httpOptions);
} <<<< THIS CODE IS FOR CONTEXT PURPOSES
getStageById(stageId: string) {
const httpOptions = {
headers: new HttpHeaders().set("Authorization","Bearer test_potatobearer123")
};
return this.http.get(CHAMPIONSHIP_BY_ID_URL + '/stages/' + stageId, httpOptions);
}
// лагерь.компонент.тс
export class StatusPhaseComponent {
championship: any;
stage: any;
stagePhase: any;
constructor(
activatedRoute: ActivatedRoute,
private championshipsService: ChampionshipsService,
private router: Router
) {
activatedRoute.params.subscribe((params) => {
if (params['id'])
championshipsService.getChampionshipById(params['id']).subscribe((serverChampionship) => {
this.championship = serverChampionship;
this.stage = this.championship.current_phase
this.stagePhase = this.stage.slug
});
});
Затем я попробовал следующее, но явно не сработало, я оказался с другим идентификатором, чем тот, который я ищу:
getStageById(stageId:string, champId: string) {
const httpOptions = {
headers: new HttpHeaders().set("Authorization","Bearer test_potatobearer123")
};
return this.http.get(CHAMPIONSHIP_BY_ID_URL + champId + '/stages/' + stageId, httpOptions);
}
activatedRoute.params.subscribe((params) => {
if (params['id'])
campeonatosService.getStageById(params['id'], params['id']).subscribe((test) => console.log(test))
})
Итак, как мне это сделать? Мне нужен объект, который находится внутри /168, чтобы я мог отображать его результаты на экране.
1 ответ
Мне кажется, что в вашем сервисном методе getStageById отсутствует идентификатор чемпионата:
getStageById(stageId: string) {
const httpOptions = {
headers: new HttpHeaders().set("Authorization","Bearer test_potatobearer123")
};
return this.http.get(CHAMPIONSHIP_BY_ID_URL + <champId> + '/stages/' + stageId, httpOptions);
}
Все параметры должны присутствовать в объекте params активируемого маршрута. Вы запустили простой console.log и проверили, какие ключи внутри?