Попробуйте:
@Injectable()
export class DataResolverService implements Resolve<any> {
constructor(
private router: Router,
private API: ApiService
) {}
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> | Observable<never> {
return this.API.getPostById(route.params.id).pipe(
switchMap(response => { // change this into a switchMap
if (response["images"]) {
return combineLatest(
// combine all of the request for the images
...response["images"].map(image => this.API.getImageById(image.id)),
).pipe(
map(images => images.map(image => ({ url: window.URL.createObjectURL(image) })),
map(images => ({ response: images })), // This map may be unnecessary
);
} else {
return of([]);
}
})
);
}
}
Это должно начать вас. Проблема с вашим подходом заключается в том, что вы подписываетесь во внутреннюю наблюдаемую область, и я не думаю, что средство распознавания маршрута ждет этого.