angular - 如何正确地将不可观察的转换为可观察的?
问题描述
我有一个不可观察的对象,我希望它转换为可观察对象,这样我就可以直接更新图像而不是刷新页面来获取结果,但是我收到以下错误:
Type 'EntityImage[]' is missing the following properties from type 'Observable<EntityImage[]>': _isScalar, source, operator, lift, and 5 more.ts(2740)
.html
<div *ngFor="let image of (images$ | async); let i = index;">
<img src="{{image.url}}" />
</div>
.ts
export class EntityImage {
url: string;
}
images$: Observable<EntityImage[]>;
getImages(entity: Entity, format: ImageFormatType): EntityImage[] {
if (!entity) return [];
return (entity.images || []).map(img => {
img.url = this.getImageURL(entity.uid, format, img.uid);
return img;
});
}
getImageURL(entityUid: string, format: ImageFormatType, imageUid?: string, imageCache?: number): string {
const path = Entity.getImagePath(entityUid, format, imageUid);
const url = this.firebaseProvider.getUrl(path);
return imageCache ? `${url}&imageCache=${imageCache}` : url;
}
selectEntity(matEvent: MatAutocompleteSelectedEvent): void {
this.entity$ = matEvent.option.value;
// ERROR here
this.images$ = this.getImages(matEvent.option.value, 'ORIGINAL');
}
有没有办法在没有上述错误的情况下做到这一点?
解决方案
您应该使用运算符来做到这一点。
import { of } from 'rxjs';
images$: Observable<EntityImage[]>;
getImages(entity: Entity, format: ImageFormatType): Observable<EntityImage[]> {
if (!entity) return [];
return (entity.images || []).map(img => {
img.url = this.getImageURL(entity.uid, format, img.uid);
return of(img);
});
}
推荐阅读
- vector - 如何在不删除先前值的情况下分配给未初始化的向量?
- c++ - 如何将读取的文本文件拆分为“\n”?
- javascript - 反应日期选择器以允许开始和结束日期至少相差 2 天或更多天
- emotion - 样式和情感评论解析器
- javascript - 为什么 ForEach 只注册数组中的第一个元素?
- javascript - 根据用户输入对 json 数据进行排序
- java - 将 JScrollPane 添加到由 TableModel 初始化的 JTable 时出现问题
- docker-compose - 无法将消息从 dapr 发布 url 发布到 rabbitmq 交换
- python - So I'm Facing A Issue Here, During Calculating The Data Its Ignoring Decimal And Just Calculating The Integer, 10*11.50 Should Be 115
- python-3.x - IntegrityError:django 中的 FOREIGN KEY 约束失败