无需订阅即可获取 ngrx 选择器的当前值

inf*_*dev 4 javascript rxjs redux ngrx angular

我的 ngrx 状态是这样的

state.data state.dataArchived

我想将数据从 store.data 复制到 state.dataArchived。

selectedSchedulingsOnPopup$ = this.store.pipe(select(selectSchedulingsByBranch));
ngOnInit() {
  this.store.dispatch(new GetDirectionsOnGraph({}));
  this.selectedSchedulingsOnPopup$.subscribe(value => {
    this.selectedSchedulingsOnPopupValue = value;
    this.store.dispatch(new GetDirectionsOnGraph(this.selectedSchedulingsOnPopupValue));
  });
}
Run Code Online (Sandbox Code Playgroud)

问题是当state.data改变时,state.dataArchived也会改变

所以我想在state.data不订阅的情况下获取当前值。

Ali*_*F50 7

我不明白这个问题,但是如果您想在不订阅的情况下获取该值,则可以将其转换为承诺。

async ngOnInit() {
  const data = await this.store.pipe(select(selectorForData),
                               take(1)).toPromise();
}
Run Code Online (Sandbox Code Playgroud)

请记住,在这种承诺方式中,它只会反应一次并获取数据并继续。如果你想知道数据切片的变化,你必须订阅它,没有其他办法。