Как мне получить доступ к ссылке, в которую я должен ввести несколько параметров в 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 и проверили, какие ключи внутри?

Другие вопросы по тегам