rxjs 中的嵌套订阅

问题描述 投票:0回答:0

我有一个 Observable 的名字 changes$,changes$ 因为 observable 有一个属性也是 Observable。这就是我的界面:(changes$ 是一个 CombinedSaveableChanges!)

export interface SaveableChange {
  comparableValues$: Observable<readonly unknown[]>,
  savingIsRunning$: Observable<boolean>,
  reset: () => void,
  save: () => void,
  isSidebar?: boolean,
  isValid$?: Observable<boolean>,
}

export type CombinedSaveableChanges = Observable<(SaveableChange & { hasChanged: boolean })[]>

我想访问 isValid$ 值并在 if 函数中使用它来确定我是否可以继续进行控制台日志记录。我不确定如何在没有两次订阅的情况下访问 valid。 如您所见,CombinedSaveableChanges 是一个数组。

changes$.pipe(take(1)).subscribe((combinedChanges => {
      combinedChanges.forEach(change => {
        change.isValid$.subscribe(isValid => {
          if (!isValid) {
            console.log('valid');
          }
          console.log('not valid');
        });
      });
    }));

我确实尝试过切换地图和两次订阅。使用 switch map 我无法获得结果并且使用两个订阅,写起来是不正确的。

mapping observable ngrx subscription
© www.soinside.com 2019 - 2024. All rights reserved.