【发布时间】:2020-07-14 10:26:23
【问题描述】:
我使用Observable从服务返回一个对象,该服务检查它的项目是否存在于缓存中,否则它调用一个http请求并返回http的Observable,以防该项目存在于缓存中i' m 使用 rxjs from.
foo.service.ts:
private foos: FooModelDTO[] = [];
getFoo(id: string) : Observable<FooModelDTO> {
var foo = this.foos.find(x => x.id === id);
if (foo) {
return from(foo); --> error!
}
return this._foosAPIService.getFooById(id);
}
foo-api.service.ts:
getFooById(id: string) : Observable<FooModelDTO> {
return this._httpClient.get<FooModelDTO>(
this._configService.resourceApiURI + 'foos/' + id
);
}
foo.model.ts:
export class FooModelDTO {
public id: string;
constructor (
id: string
)
{
this.id = id;
// other properties...
}
}
错误 TS2322:类型 'Observable' 不可分配给类型 “可观察”。 类型“{}”缺少类型“FooModelDTO”的以下属性:id、imagePath、updateDate、title 和另外 6 个。
如何克服这个错误?并在缓存结果存在时立即返回。
【问题讨论】:
-
您需要使用
of运算符,而不是使用from。 -
您确定要根据索引从
foos数组中获取foo,而不是在'FooModelDTO' 内的id属性上吗? -
嘿@DurgeshPal 谢谢,我已经更新了问题以使用
find
标签: angular rxjs observable