无法使用ngrx在可观察到的管道上无法正常工作

时间:2019-07-23 15:40:27

标签: rxjs observable ngrx

我使用选择器从ngrx获取数据

  schedules$ = this.store.pipe(select(selectSchedulingsTimes));

然后在可观察的

上的Oninit I管道中
ngOnInit() {
  this.store.dispatch(new GetSelectedItem());
  this.store.dispatch(new GetSchedules());
  let data = this.schedules$.pipe(
    map((elm: ISchedule[]) => {
      return elm.map((elm: ISchedule) => {
        return { tp_org_r: elm.tp_org_r, tp_des_r: elm.tp_des_r };
      });
    })
  );

}

我永远都不会进入map我不知道为什么?

1 个答案:

答案 0 :(得分:1)

因为let data是冷的可观察到的,并且只有在调用subscribe方法后才会触发。 进一步了解Hot vs Cold Observables

data.subscribe(console.log)
  

Observable何时开始发出其项目序列?这取决于可观察的。一个“热门”可观察对象可能会在创建后立即开始发射项目,因此以后订阅该可观察对象的任何观察者都可以开始观察中间位置的序列。另一方面,“冷”的Observable会等到观察者订阅它之后才开始发射项目,因此可以保证这样的观察者从一开始就可以看到整个序列。

     

在ReactiveX的某些实现中,还有一个称为“可连接”的可观察对象。这样的Observable直到调用其Connect方法时才开始发出项目,无论是否有任何观察者已订阅它。