Angular 7 没有特定操作的 ngrx 编辑存储
Angular 7 ngrx edit store without specific actions
我调用了一个 ngrx 动作,并将结果保存在一个组件局部变量中。
如果我编辑此副本,但不保存...并且不执行特定操作,当我离开路线时,商店会自动更新!
我的代码:
this.templatesLoaded
.pipe(untilComponentDestroyed(this))
.subscribe((loaded: boolean) => {
if (loaded) {
this.templateObs
.pipe(untilComponentDestroyed(this))
.subscribe((tmpl: ProjectTemplate) => {
this.template = { ...tmpl }; // <-- THIS IS MY COPY
我编辑模板删除了一个字段:
deleteField(idx: number): void {
this.template.fields.splice(idx, 1);
}
现在,如果我离开路线,商店会更新并且 "fields" 减少一个...
怎么可能?
如果我使用 redux Chrome 插件跟踪事件,则不会触发任何操作...只有 ROUTER_NAVIGATION...
感谢大家!
对象剩余展开运算符{ ... }
,只复制一层深度。
状态可能因此而改变,要解决这个问题,您必须复制属性,例如
{ fields: ...tmpl.fields }
我调用了一个 ngrx 动作,并将结果保存在一个组件局部变量中。 如果我编辑此副本,但不保存...并且不执行特定操作,当我离开路线时,商店会自动更新!
我的代码:
this.templatesLoaded
.pipe(untilComponentDestroyed(this))
.subscribe((loaded: boolean) => {
if (loaded) {
this.templateObs
.pipe(untilComponentDestroyed(this))
.subscribe((tmpl: ProjectTemplate) => {
this.template = { ...tmpl }; // <-- THIS IS MY COPY
我编辑模板删除了一个字段:
deleteField(idx: number): void {
this.template.fields.splice(idx, 1);
}
现在,如果我离开路线,商店会更新并且 "fields" 减少一个...
怎么可能?
如果我使用 redux Chrome 插件跟踪事件,则不会触发任何操作...只有 ROUTER_NAVIGATION...
感谢大家!
对象剩余展开运算符{ ... }
,只复制一层深度。
状态可能因此而改变,要解决这个问题,您必须复制属性,例如
{ fields: ...tmpl.fields }