当一个动作被调度时做一些事情
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'));
}
}
假设我们有一个动作 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'));
}
}