代码之家  ›  专栏  ›  技术社区  ›  G B

检查字段是否已用Angular 6和Firestore修改

  •  1
  • G B  · 技术社区  · 7 年前

    我有一个用于编辑用户详细信息的表单,它应该检查用户是否进行了修改,如果没有,则不进行更改。 当前正在使用 if 要检查哪个有效,但我仍然觉得不是有效的方法,因为我有多个字段,必须检查每个字段,这使得代码重复性和巨大。

        if (f.value.first_name) {
            this.user.firstName = f.value.first_name;
        }
    

    我试过用猫王接线员,但对我不起作用

    this.user.firstName ?  this.user.firstName :f.value.first_name;
    

    还有其他有效的方法吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Amit Chigadani    7 年前

    您可以遍历每个表单控件并检查它们是否 dirty (修改)。

    Object.keys(f.controls).forEach((key: string) => {
            if (f.get(key).dirty) {
                this.user[key] = f.get(key).value
            }
    });
    
        2
  •  0
  •   DeborahK    7 年前

    我保留原始对象的副本,然后执行以下操作:

    get isDirty(): boolean {
        return JSON.stringify(this.originalProduct) !== JSON.stringify(this.currentProduct);
    }
    

    stringify 原始产品(编辑前)和当前产品的副本并进行比较。我想如果他们不平等的话,事情就会改变。

    这种方法有一些需要注意的地方,特别是如果您的对象结构非常复杂 可以 如果stringify没有创建完全相同的字符串。但我没有碰到这个案子。