如何更改此异步管道并直接获取价值?

问题描述

我的compomnet.tx文件具有一些类似于下面的商店订阅方法

readonly selectedId$: Observable<string | null> = this.store.select(selectedId)
    .pipe(shareReplayUntil(this.destroySub));

通常将它们声明为变量。但是我需要从它们中获取当前值,并将其传递到同一.ts文件中的另一种方法

  onScanId() {
      // here I need to take subscribe id
      this.store.dispatch(scanId({ Id: "1" }));
  }

我需要一些专家帮助来解决此问题。我更喜欢我可以删除此只读内容并将其分配给直接变量,并在HTML文件中使用它。 目前,我使用异步管道{ selectedId$ | async }

获取价值

解决方法

是什么使您无法做

  this.selectedId$.pipe(take(1)).subscribe(
    Id => this.store.dispatch(scanId({ Id }))
 )

您使用take(1)订阅了您的可观察物,得到了一个单一的值而忘了它。然后只需订阅它,获取ID并分派