对象数组上的 Angular RxJS 可观察过滤器

标签 angular rxjs observable

我是 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/

相关文章:

css - Angular2 D3 - 未应用 CSS 样式

json - Angular 4 HTTP 不返回 JSON 正文

javascript - 如何从 Observable<Array<any>> 中删除特定元素

javascript - 如何以 Angular 返回 Observable/http/async 调用的响应?

angular - rxJs & angular 4 & restangular : stack errorInterceptors

Angular PWA 在 Android 主屏幕应用程序和浏览器上强制重新加载

javascript - 如果得到相同的数据,则停止发送请求

javascript - 强制完成 rxjs 观察者

angular - 使用异步管道在模板中的多个位置使用相同的可观察对象的性能

对具有通用类型约束的 Observable 的 Swift 扩展