NGXS-调度动作后执行某些操作

时间:2018-09-23 07:59:12

标签: angular ngxs

比方说,我们有一个操作SyncUserData,该操作返回可观察到的信息,并监听数据库中的更改。每当有更改时,操作都会分派操作new PatchUserData(newData)

从状态SyncUserData派发ngxsOnInit动作(仅一次)。

在其他部分(例如,组件)中,我想在操作PatchUserData调度时执行某项操作。像这样:

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

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

2 个答案:

答案 0 :(得分:2)

您无需订阅某个事件,您可以订阅商店中的userData并拥有最新版本,无论任何操作对其进行了更改。根据您的数据模型修改下一个样本并订阅可观察的样本:

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

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

有关选择的更多信息:https://ngxs.gitbook.io/ngxs/concepts/select

答案 1 :(得分:2)

除了直接订阅状态外,另一种方法是使用NGXS动作流,当特定动作已分派/完成时,通知该声音,请参阅action handlers的文档。

来自官方文件:

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

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