【发布时间】:2020-03-05 20:53:51
【问题描述】:
我可以做些什么来让解析器等待它从 API 获取图像。现在,Angular 等到收到数据,显示页面,然后尝试获取帖子的图像。
@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(
map(response => {
if (response["images"]) {
const images = [];
response["images"].forEach(image => {
this.API.getImageById(image.id).subscribe(
(img: any) => {
const imageObject = {
url: window.URL.createObjectURL(img),
};
images.push(imageObject);
}
);
});
response["images"] = images;
return response;
}
return response;
})
);
}
}
【问题讨论】:
-
看起来你嵌入了 Observable 的;所以解析器在第一个解析后解析。我怀疑您想返回内部可观察对象而不是外部可观察对象。应该有一个 rxjs 操作员来处理这个问题。可能是 MergeMap?
-
你是对的。 SwitchMap 帮我解决了这个问题。
标签: javascript angular typescript angular-resolver