Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不订阅的情况下获取ngrx选择器的当前值_Javascript_Angular_Redux_Rxjs_Ngrx - Fatal编程技术网

Javascript 在不订阅的情况下获取ngrx选择器的当前值

Javascript 在不订阅的情况下获取ngrx选择器的当前值,javascript,angular,redux,rxjs,ngrx,Javascript,Angular,Redux,Rxjs,Ngrx,我的ngrx状态是这样的 状态数据 state.dataarchive 我想将数据从store.data复制到state.dataArchived selectedSchedulingsOnPopup$ = this.store.pipe(select(selectSchedulingsByBranch)); ngOnInit() { this.store.dispatch(new GetDirectionsOnGraph({})); this.selectedSchedulingsOn

我的ngrx状态是这样的

状态数据 state.dataarchive

我想将数据从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));
  });
}
问题是当
state.data
更改时,
state.dataArchived
也会更改


因此,我想在不订阅的情况下获取state.data的当前值。

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

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

请记住,按照这种承诺方式,它只会做出一次反应,然后获取数据并继续进行。如果您想知道数据片的更改,您必须订阅它,没有其他办法。

如果您只需要第一个值,然后忽略所有后续更改,请使用first()运算符:

  ngOnInit() {
    this.store.dispatch(new GetDirectionsOnGraph({}));
    this.selectedSchedulingsOnPopup$.pipe(first())
      .subscribe(value => {
        this.selectedSchedulingsOnPopupValue = value;
        this.store.dispatch(new GetDirectionsOnGraph(this.selectedSchedulingsOnPopupValue));
      });
  }

我想要的是在呈现组件时获取数据的当前值,然后如果state.data更改忽略新值,我认为正如您所说的,通过将其转换为promise,您只需要由
selectedSchedulingsOnPopup
返回的第一个值吗?我需要呈现组件时的值,所以我想这是订阅时的第一个值,只有第一个值啊。。。在这种情况下,这类似于我之前回答的一个问题()。让我知道它是否有意义?如果仍然没有,我将提供一个答案这是否回答了你的问题?