Angular 10 - 在订阅中调度 NGXS 操作导致无限循环
Angular 10 - Dispatch NGXS Action within a Subscribtion causes infinite Loop
我在订阅中使用 store.dispatch() 函数调用 NGXS 操作。在调用 store.dispatch() 函数之前,我需要来自订阅的可观察对象的数据,因此我必须以某种方式等待可观察对象传递数据。我不知道如何修复此代码以防止循环。你们有人知道如何正确处理吗?
@Select(NepoState.anlagen) myObserveable$: Observable<Anlage[]>;
ngOnInit(): void {
this.myObserveable$.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data); // <-- this causes the loop
})
}
您在 subscribe
中的调度正在更改状态并再次触发选择器。这将派发另一个动作,你有一个循环。
您可以执行以下操作:
ngOnInit(): void {
this.myObserveable$
.pipe(
take(1) // either take just one emission, or using first()
//filter(data => /* or filter according to some condition */)
)
.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data);
})
}
我在订阅中使用 store.dispatch() 函数调用 NGXS 操作。在调用 store.dispatch() 函数之前,我需要来自订阅的可观察对象的数据,因此我必须以某种方式等待可观察对象传递数据。我不知道如何修复此代码以防止循环。你们有人知道如何正确处理吗?
@Select(NepoState.anlagen) myObserveable$: Observable<Anlage[]>;
ngOnInit(): void {
this.myObserveable$.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data); // <-- this causes the loop
})
}
您在 subscribe
中的调度正在更改状态并再次触发选择器。这将派发另一个动作,你有一个循环。
您可以执行以下操作:
ngOnInit(): void {
this.myObserveable$
.pipe(
take(1) // either take just one emission, or using first()
//filter(data => /* or filter according to some condition */)
)
.subscribe((data) => {
this.store.dispatch(new ChangeAvalableFilterAction(data);
})
}