【问题标题】:Subscribe to Observable -> Filter -> Provide as Observable订阅 Observable -> 过滤器 -> 作为 Observable 提供
【发布时间】:2018-05-22 23:16:27
【问题描述】:

我正在尝试开发一个 Angular 服务,它使用其他服务来提供这些服务的元数据。数据对象是具有连接类的不同类别的人。 (即客户、顾问和销售关系。)

我想跟踪的一个基本指标是是否为客户分配了顾问。 (即不匹配)。我的标准服务中有一个名为 Clients 的 Observable Array,我在 MetaData Service 中订阅它,如下所示:

this.clientService.clientArray().map( ..... ).subscribe(i => this.unmatchedClients.next(i);

我想要做的是过滤来自 Observable Subscription 的数组以检查多个字段。在别处有人建议我应该像这样进行完整的过滤器调用:

this.clientService.clientArray().map( r => {
    r.filter( i => {
        i.connected === true
    })
}).subscribe(r => this.unmatchedClients.next(r));

预期结果应该是一组客户,而不是我可以订阅并获得计数长度的单个客户。

我怎样才能做到这一点?

【问题讨论】:

  • 地图中的过滤对您不起作用吗?顺便说一句,在该代码中,您应该在r.filter(...) 之前有一个return,因为它被{} 包围。
  • 没有,但我认为是因为我没有完全理解 observables
  • 尝试添加return语句。如果这不起作用,您能否举一个 this.clientService.clientArray() 返回的数据示例。

标签: angular rxjs observable subscribe


【解决方案1】:

我认为您还有一个额外的不必要的步骤。如果您想过滤通过管道传输到订阅的数组,为什么不这样做

this.clientService.clientArray()
 .filter( client => {
    return client.connected;
})
.subscribe(r => this.unmatchedClients.next(r));

订阅中的代码我不知道目标是什么,所以我保持原样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2018-08-28
    • 2019-12-29
    • 2017-03-02
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多