Angular 7 Ngrx编辑存储,无需执行特定操作

时间:2018-11-12 13:59:41

标签: angular ngrx ngrx-store angular7

我调用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);
}

现在,如果我离开路线,商店将更新,“字段”将减少一...

怎么可能?

如果我使用Redux Chrome插件跟踪事件,则不会触发任何操作……只有ROUTER_NAVIGATION ...

谢谢大家!

1 个答案:

答案 0 :(得分:0)

对象剩余散布运算符{ ... }仅复制一层。

状态可能因此而改变,要解决此问题,您必须复制属性,例如

{ fields: ...tmpl.fields }