angular - NGXS | 路由返回旧数据后选择
问题描述
我正面临 NGXS 的问题。我有一组对象,我通过调度一个动作来编辑其中一个对象。现在,当我单击重置按钮时,我想路由到父组件并将状态重置为原始状态,因此我保留了原始对象的副本。但是,问题是当我在父组件中执行选择操作时,它仍然返回旧对象。
@Select(ItemState.getItems) ItemNGXS: Observable<ItemStateModel>;
我可能做错了什么?
重置按钮代码:
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
item.state.ts editItem 方法:
@Action(EditItem)
edit({ getState, setState }: StateContext<ItemStateModel>, { payload }: EditItem) {
const state = getState();
const ItemList = [...state.items];
const index = itemList.findIndex(item => item.Id === payload.Id);
itemList[index] = JSON.parse(JSON.stringify(payload));
setState({
...state,
items: itemList
});
}
我注意到 getItems 在编辑之前将状态恢复到旧状态(即)。我不确定为什么选择器将其恢复为旧状态。
解决方案
我解决了。这是我的一个愚蠢的错误。
resetArray() {
this._store.dispatch(new EditItem(this.originalItem))
.subscribe(res => {
this._route.navigate(['questionnaire']);
});
}
在路由到一个组件之后,我正在调度一个将状态设置为旧数据的操作。我将代码移动到正确的位置,它得到了修复。
推荐阅读
- scala - 线程“主”java.nio.file.AccessDeniedException 中的异常:s3a://......................:innerMkdirs
- flutter - 颤振快速拨号文本标签走出屏幕
- python-3.x - 尝试将 % 与列表数据一起使用时打印“不支持的操作类型”错误?
- c - C 嵌套循环到 ARM 程序集
- javascript - 如何在单个 onChange 中同时更改值更改和函数调用
- c++ - Visual Studio 2019 - C++ 控制台应用程序。随 exe 提供的文件
- batch-file - 需要帮助制作自定义批处理文件以通过上下文菜单将图标应用于当前文件夹
- php - 比较一个字符串和一个 php 数组,只显示匹配项
- database - 无法在 IntelliJ 中添加 Cassandra DB
- unity3d - Enum 和 MaterialEnum 有什么区别?