javascript - 在 ngrx 中的订阅内部进行管道传输

标签 javascript redux rxjs store ngrx

我有一个选择器,它采用参数来过滤值。

参数取决于可观察的返回。

export class LineSynopticComponent implements OnInit, AfterViewInit {

schedules$: Observable<ISchedule[]>;

ngOninit(){
  this.selectedDate$.subscribe(elm => {
  this.schedules$ = this.store.pipe(select(selectSchedulingsTimes, { time: elm.timeSelect }));
});
}

还定义了 selectSchedulingsTimes 选择器:

const schedulings = (state: IAppState) => state.schedulings;

export const selectSchedulingsTimes = createSelector(
  schedulings,
  (state: ISchedulesState, { time }: { time: string }) => {
    let nowFormat = moment(time, 'HH:mm');
    return state.schedulings.data.filter(elm => {
      ... 
      return elm
    });
  }
);

我第二次订阅schedules$

this.schedules$.subscribe((schedules: ISchedule[]) => {

  ...

}

当应用程序启动时,我仅进入 selectSchedulingsTimes 选择器一次,但是当我更改 selectedDate$ 的值时,不会触发选择器,因此我不会输入 选择SchedulingsTimes

如何让选择器在 selectedDate 每次更改时发送新数据?

是因为我没有订阅 schedules$ 吗?

如有不清楚的地方,请随时向我询问

最佳答案

让我们像这样更改您的可观察设置:

ngOninit(){

    this.selectedData$.pipe(
      switchMap((elm) => {
        return this.store.pipe(select(selectSchedulingsTimes, { time: elm.timeSelect }));
      })
    ).subscribe((resposeFromStore) => {
      //Do whatever you want tot do with the store value
      console.log(resposeFromStore);      
    })    
  }

您无需订阅 selectedData$ 然后设置其他可观察对象。 希望对您有所帮助。

关于javascript - 在 ngrx 中的订阅内部进行管道传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57267134/

相关文章:

javascript - 什么是 JavaScript AST,如何使用它?

javascript - Redux 状态未初始化为初始状态

RxJS Buffer,如何将多次单击事件分组为流

javascript - 如何使用 html2canvas.js 将带有 @font-face 的 SVG 文本元素转换为 Canvas ?

javascript - 从 asp.net 3.5 升级到 asp.net 4.0 会导致某些回发出现 javascript 错误

javascript - 使用 Redux Saga 更新单个状态属性的最佳实践

javascript - 从 Angular2/Typescript 中的 rxJs 复制响应数据

reactjs - 围绕 Angular2 的架构模式 : Redux, Flux、React、Reactive、RxJS、Ngrx、MVI、

javascript - 不显示 src 的视频 RTC

reactjs - Redux - 从后端获取初始状态 - 这是正确的方法吗?