При маршрутизации в Angular в методе компонента ngOnInit
я получаю идентификатор жанра по наблюдаемым, в пределах этой наблюдаемой я вызываю метод со службой, которая делает HTTP-запрос.
this.movies: Movie[];
ngOnInit() {
this.route.paramMap.subscribe(param => {
let id = +param.get('id');
this.movieService.getMoviesByGenres(id).subscribe( response => {
this.movies = response['results'];
});
});
}
возвращает это:
"results": [
{
"vote_count": 664,
"id": 287947,
"video": false,
"vote_average": 7.4,
"title": "Shazam!",
.
.
.
},
{
"vote_count": 3623,
"id": 299537,
"video": false,
"vote_average": 7.2,
"title": "Captain Marvel",
.
.
.
}, ...
]
То, что он возвращает, это фильмы без приведения, поэтому мне нужно запросить приведения к фильму, вызвав другой HTTP-запрос для каждого фильма, который возвращает первый запрос, и отправить информацию второго запроса о приведениях кмассив movies[i].cast
.
Так что в основном то, что я хотел бы, выглядит следующим образом:
ngOnInit() {
this.route.paramMap.subscribe(param => {
let id = +param.get('id');
this.movieService.getMoviesByGenres(id).subscribe( response => {
this.movies = response['results'];
});
//pesudo code
foreach(this.movies as movie) {
this.movies[current element].casts =
this.movieService.getCastByMovieId(movie.id);
}
});
}
получение фильмов по жанрам и по прибытии результата, итерация по массиву movies[]
и вызов метода для полученияприведение к идентификатору фильма и добавление приведений к свойству фильма casts: string []
.И верните this.movies: Movies[]
, который теперь также содержит приведения.