当前位置: 首页 > 知识库问答 >
问题:

在Rxjs中使用管道时不可观测-角度

段干飞翮
2023-03-14

以下代码未订阅:

this.store
      .select(petSelectors.selectPetData)
      .pipe(find(x => x.petName === petName)).subscribe(x => console.log(x));

但是如果我这样做,它确实订阅:

this.store.select(petSelectors.selectPetData).subscribe(x => console.log(x));

更新:这个工作太

const x = this.store .select(petSelectors.selectPetData).pipe(find(x => x));

但当我添加逻辑时,它并没有

我遵循RxJS官方文档:https://rxjs-dev.firebaseapp.com/api/operators/find

我甚至必须在管道()内进行尝试,尝试使用take(1)、map()等,当我执行.subcribe()时,什么也不会打印出来。我也尝试过使用async管道。

对象:

{
  "petName": "devpato"
}

我传递的昵称是将对象与“Devpato”进行比较

共有1个答案

赵浩邈
2023-03-14

找到我的问题了!@connorsfan基本上x=

.pipe(map(x => x.find(u => u.petName ===petName));

 类似资料:
  • 我有一个沙盒,它订阅了一个消息流,我想过滤该流,以查找已发送到或从特定用户使用另一个组件中指定的路由参数接收的消息。 messages.sandbox.ts: messages.detail.container.ts this.matching消息$似乎只包括this.received消息$但是我知道this.sent消息$不是空,因为我可以在我的模板中使用它没有问题。 我是不是遗漏了一些合并观测

  • 我有一个服务,有一个方法foo。在该方法中,我订阅了一个可观察的(超文本传输协议-客户端)。 我喜欢从foo返回一个布尔值,该值取决于get。这不起作用,因为http.get是asynchrouns-在http.get完成之前调用return。 我怎样才能使这个同步? 编辑 返回可观察的布尔值在这里不是一个选项。这是因为我处理get in foo的响应(此处未显示),但我也需要根据它的返回来执行f

  • 在角度分量的顶部有以下初始化。 在我的组件中的某个地方,我使用选择器对Ngrx存储进行以下调用,以获取可观测数据。所有这些都很好,我得到了我想要的数据。 我需要知道这个可观察的什么时候完成。我需要设置一个布尔值,当所有可观察到的数据都试图完成时,它将关闭加载指示器。这是通过Web服务完成的。 因为可观测的源来自其他地方,所以我无法挂起“完整”回调

  • 我有一个HTTP请求,希望将结果共享给多个组件。当然,HTTP请求返回一个可观察的。我希望多个组件能够订阅此服务,而不会触发额外的HTTP请求。 我在一个组件中使用实现了这一点,该组件按需发出HTTP请求,并有另一种方法订阅该主题。虽然这是可行的,但似乎有些过分,而且肯定有更好的方法。 主题服务 和一个订户 和第二个订户 从管道链中删除时,会发出多个网络请求。是否有一种更优雅/正确的方式将观察到的

  • 我正在使用angularfire,我得到了一个连续的阵列流,其中包含任务ID。我需要获取数组中每个id的任务文档作为一个新的可观察的。然后将任务文档数组返回到流中,这样我就可以在组件中订阅它并显示任务列表。 到目前为止,我用mergeMap得到了它。我分割阵列,获取任务文档并将它们返回到流中。我的解决方案唯一的问题是,当我订阅可观察到的时,我没有得到一系列任务,但每个任务都是一个单一的变化,我不能

  • 我们有一个执行http请求的请求服务。所有请求都实现IRequest接口,该接口包含http方法和一个执行函数,该函数依次返回另一个可观察的对象。 RequestService有一个重载,它接受一个源可观察对象,还有一个requestfactory,它根据源可观察对象的值返回一个IRequest实例。 当然,在服务中做了更多的工作(日志记录、默认错误处理,...),但大多数与问题无关。 现在,这一