angular - Ngrx/data 中不同 MergeStratagy 的真正区别是什么?
问题描述
正如在 ngrx doc 中声明的那样:
IgnoreChanges:更新集合实体并忽略
此操作的所有更改跟踪。每个实体的 changeState 都保持不变。
PreserveChanges:更新未更改实体的当前值。对于
每个更改的实体,它保留当前值并用合并实体覆盖 originalValue。这是查询成功的
默认值。
OverwriteChanges:替换当前集合实体。对于每个
合并的实体,它会丢弃 changeState 并将 changeType 设置为
“未更改”。这是保存成功的默认值。
我将其理解为发生变化时的行为。例如,通过使用 IgnoreChanges,更新实体时,不会发出更改事件。
但是在我的代码中,即使给出了这个策略。实体$ 仍会收到更改事件。
this.resultMetaService.removeOneFromCache(previousResultMeta, { mergeStrategy: MergeStrategy.IgnoreChanges });
this.resultMetas$ = this.resultMetaService.entities$.pipe(
map(rms => {
const caseIds = this.metaService.getSyncAllEntities().map(m => m.caseId);
return rms.filter(rm => caseIds.includes(rm.caseId));
})
);
我理解错了吗?而对于 PreserveChanges 和 OverwriteChanges,接收变更事件有什么区别?
解决方案
推荐阅读
- ssh - 焦油——通过 ssh 连接比较
- python - 似乎无法在一个数据帧上删除重复项,但可以为另一个数据帧执行此操作
- eclipse - 如何将基于 Eclipse 的项目从 GitHub 正确导入 Intellij
- javascript - 使用 ReactionCollector 显示对消息做出反应的用户
- vba - 使用 VBA 的 MS Project 中两个日期之间可能的工作时间
- python - 如何向 AWS SageMaker 上的 Python 路径添加另一个路径
- tla+ - TLA+:未检查时间属性
- javascript - 在量角器测试自动化中使用 browsermob 将标题添加到主页 URL
- reactjs - 解析错误:功能组件中出现意外的令牌反应
- mysql - MySQL 错误 2003 (HY000):可以从 127.0.0.1 连接,但不能通过 192.168.1.53