как получить по id один объект из удаленного JSON API с токеном в Angular 2+

есть удалённый API с доступом через токен: массив объектов, в которых один из ключей - id: string.

сервис, в котором есть метод getAll() для вcех объектов и getById() для одного из них

job.service.ts

export class JobService {

  constructor(private http: HttpClient) {}

  url: string =
  'https://api.json-generator.com/templates/......';

  getAll(): Observable<Jobs[]> {
    return this.http.get<Jobs[]>(this.url)
  }

  getById(id: string): Observable<Jobs> {
    const path = `${this.url}`;
    return this.http.get<Jobs>(path)
  }
}

из сервиса я без проблем вытягиваю весь массив и взаимодействую с ним в шаблоне, выводя каждый объект отдельной карточкой

job-list.component.ts

export class JobListComponent implements OnInit {

  constructor(private jobService: JobService) {}

  jobList$ = this.jobService.getAll().pipe(map((newsList) => newsList));

  ngOnInit(): void {}
}

в каждой из карточек через routerLink и queryParams в шаблоне я хочу перейти к отдельной компоненте карточки, на которую я кликнул:

job-list-card.component.html

          <a routerLink="/details" [queryParams]="{ id: jobs.id }">
            <h2 class="card-info__title">
              {{ jobs.title }}
            </h2>
          </a>

но по итогу я перехожу на отдельную страницу, где нет никаких динамических данных из API. только шаблон и стили

job-detail.component.ts - ts-файл компоненты

export class JobDetailComponent implements OnInit {
  
  jobs: Jobs | undefined;

  constructor(
    private route: ActivatedRoute,
    private location: Location,
    private jobService: JobService
  ) {}

  ngOnInit(): void {
    this.getJob();
  }

  getJob(): void {
    const id = String(this.route.snapshot.paramMap.get('id'));
    this.jobService.getById(id)
      .subscribe(jobs => this.jobs = jobs);
  }

  goBack(): void {
    this.location.back();
  }
}

как мне вытянуть данные конкретного объекта на отдельной компоненте?


Ответы (0 шт):