Javascript 在不订阅的情况下获取ngrx选择器的当前值
我的ngrx状态是这样的 状态数据 state.dataarchive 我想将数据从store.data复制到state.dataArchivedJavascript 在不订阅的情况下获取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
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
返回的第一个值吗?我需要呈现组件时的值,所以我想这是订阅时的第一个值,只有第一个值啊。。。在这种情况下,这类似于我之前回答的一个问题()。让我知道它是否有意义?如果仍然没有,我将提供一个答案这是否回答了你的问题?