我是 Angular 和 Observable 的新手。我想对对象数组应用过滤器。这就是我的代码的外观。 .
getReport() 获取所有报告。
getReports(): Observable<IReport[]> {
console.log("in get Reports Service Call");
return this._http.get<IReport[]>(this.URL)
.pipe(
tap(data => console.log('All Data Retrieved - ' + JSON.stringify(data))),
catchError(this.handleError));
}
我正在尝试编写另一种可以根据报告名称进行过滤并给我 IReport 数组的方法。这就是我现在所拥有的。
getReportDetails(name : string) : Observable<IReport[]>
{
return this.getReports().pipe(
map((reports : IReport[]) => reports.find(p => p.reportName === name))
);
}
我收到错误
Type 'Observable<IReport>' is not assignable to type 'Observable<IReport[]>'.
这是具有 5 个属性的 IReport 接口(interface)。
export interface IReport {
date: Date;
reportName: string;
reportLink: string;
reportStatus: string;
region: string;
}
我做错了什么?谢谢大家。
最佳答案
我觉得应该是
map((reports : IReport[]) => reports.filter(p => p.reportName === name))
而不是
map((reports : IReport[]) => reports.find(p => p.reportName === name))
find
将返回与条件 p.reportName === name
IReport
关于对象数组上的 Angular RxJS 可观察过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52263374/