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);
  })
}