5

假设我们是一个 action SyncUserData,它返回监听数据库变化的 observable。每当有变化时,动作就会调度动作new PatchUserData(newData)

SyncUserData动作是从ngxsOnInit状态中调度的(仅一次)。

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

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

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

4

2 回答 2

3

直接订阅状态的另一种方法是使用 NGXS 操作流在特定操作已分派/完成时得到通知,请参阅操作处理程序的文档。

来自官方文档:

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

  ngOnInit() {
    this.actions$.pipe(ofActionSuccessful(CartDelete)).subscribe(() => alert('Item deleted'));
  }
}
于 2018-10-04T06:34:59.387 回答
2

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

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

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

更多关于选择:https ://ngxs.gitbook.io/ngxs/concepts/select

于 2018-09-23T08:14:37.953 回答