当一个动作被调度时做一些事情

Do something when an action has been dispatched

假设我们有一个动作 SyncUserData,其中 returns 可观察到的是侦听来自数据库的更改。每当发生变化时,动作都会调度动作 new PatchUserData(newData).

SyncUserData 操作从状态的 ngxsOnInit 调度(仅一次)。

在不同的部分(例如,组件),我想在调度动作 PatchUserData 时做一些事情。像这样:

this.store.onDispatch(PatchUserData).subscribe();

我在源代码中查找了一下,但没有找到与我的示例类似的内容。

在您的情况下,您不需要订阅某个事件,您可以在您的商店中订阅 userData 并拥有它的最新版本,无论任何操作改变了它。根据您的数据模型修改下一个示例并订阅 observable:

import { Select } from '@ngxs/store';

@Select(({ userData }: AppState) => userData)
  userData$!: Observable<UserData>;

关于 select 的更多信息:https://ngxs.gitbook.io/ngxs/concepts/select

直接订阅状态的另一种方法是使用 NGXS 操作流,以便在特定操作已完成时收到通知dispatched/completed请参阅 action handlers 的文档。

来自官方文档:

@Component({ ... })
export class CartComponent {
  constructor(private actions$: Actions) {}

  ngOnInit() {
    this.actions$.pipe(ofActionSuccessful(CartDelete)).subscribe(() => alert('Item deleted'));
  }
}