比方说,我们有一个操作SyncUserData
,该操作返回可观察到的信息,并监听数据库中的更改。每当有更改时,操作都会分派操作new PatchUserData(newData)
。
从状态SyncUserData
派发ngxsOnInit
动作(仅一次)。
在其他部分(例如,组件)中,我想在操作PatchUserData
调度时执行某项操作。像这样:
this.store.onDispatch(PatchUserData).subscribe();
我在源代码中查找了一些内容,但没有发现与我的示例类似的内容。
答案 0 :(得分:2)
您无需订阅某个事件,您可以订阅商店中的userData
并拥有最新版本,无论任何操作对其进行了更改。根据您的数据模型修改下一个样本并订阅可观察的样本:
import { Select } from '@ngxs/store';
@Select(({ userData }: AppState) => userData)
userData$!: Observable<UserData>;
答案 1 :(得分:2)
除了直接订阅状态外,另一种方法是使用NGXS动作流,当特定动作已分派/完成时,通知该声音,请参阅action handlers的文档。
来自官方文件:
@Component({ ... })
export class CartComponent {
constructor(private actions$: Actions) {}
ngOnInit() {
this.actions$.pipe(ofActionSuccessful(CartDelete)).subscribe(() => alert('Item deleted'));
}
}