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

RxJs从可观测数据中获取值

岳玉堂
2023-03-14

在组件中:

singleEvent$: Observable<Event>;

在init上,我可以观察到

this.singleEvent$ = this._eventService.events$
  .map(function (events) {
    let eventObject = events.find(item => item.id === eventid);
    let eventClass: Event = new Event(eventObject);
    return eventClass;
  });

如何获取当前值,如event.name

共有3个答案

韩乐湛
2023-03-14

您可以使用observable.pipe(take(1)).subscribe将observable限制为仅获取一个值,并停止侦听更多值。

let firstName: string; 

        this.insureFirstName
            .pipe(take(1))  //this will limit the observable to only one value
            .subscribe((firstName: string) => {
                this.firstName = firstName; asssgning value 
            });
        console.log(this.firstName); //accessing the value
颜安宁
2023-03-14

再加上Günter Zöbauer的答案,如果你想同步获得你的可观察对象内部的价值,那么行为主体可能就是你想要的。

行为主体是一个始终具有值的可观察对象,您可以调用myBe行为主体ubject.get值()my行为主体ubject.value来同步检索行为主体当前持有的值。

因为它本身也是一个可观察的对象,所以您仍然可以订阅BehaviorSubject,以异步响应它所持有的值的更改(例如,myBehaviorSubject.subscribe(事件=

以下是与给定示例相匹配的一些用法,用于从给定服务在组件中创建BehaviorSubject:

@Component({
  //...
})
export class YourComponent implements OnInit {
  singleEvent$: BehaviorSubject<Event>;

  constructor(private eventService: EventService){}

  ngOnInit(){
    const eventid = 'id'; // <-- actual id could go here
    this.eventService.events$
      .pipe(
        map(events => {
          let eventObject = events.find(item => item.id === eventid);
          let eventClass: Event = new Event(eventObject);
          return eventClass;
        })
      )
      .subscribe(event => {
        if(!this.singleEvent$){
          this.singleEvent$ = new BehaviorSubject(event);
        } else {
          this.singleEvent$.next(event);
        }
      });
  }
}

公良骁
2023-03-14

要从可观察对象获取数据,您需要订阅:

this.singleEvents$.subscribe(event => this.event = event);

在模板中,您可以使用异步管道直接绑定到可观测对象:

{{singleEvents$ | async}}
 类似资料:
  • 我想计算单个可观测物体的排放量之间的差异。 如果一个可观测的物体发出一个新的值,有没有办法同时得到它当前和以前的发射?我想要这样的东西: 我该怎么做呢?我是否需要将每个发射存储在一个上限变量中,或者是否有一种奇特的RxJS方法来实现这一点?

  • 我正在尝试使用 考虑以下代码 每当我试图打印出的结果时,它总是返回 即使我返回一个json对象。 如何打印的结果?

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

  • 我是Rxjs可观测对象的新手,我需要使用Rxjs实现节流。 在下划线中,我们使用下面的行来实现这一点- 请协助如何使用可观察到的数据。

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

  • 使用rxjsv6 所以我有多个我想要跟踪/观察的变量,当它们中的任何一个发生变化时,触发一个可观察对象来调用一个API,该API然后根据这些变量更新其他内容。 我想我可能会在上触发一个事件来强制可观察对象做一些事情,但它不会根据我想要的返回结果 例如。 然而,在可观测数据上没有订阅方法。我试图修改我的另一个观察值(这是可行的)