首页 > 解决方案 > 检查字段是否已使用 Angular 6 和 Firestore 进行了修改

问题描述

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

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

我曾尝试使用 elvis 运算符,但它不适合我

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

有没有其他有效的方法来做到这一点?

标签: javascriptangulartypescriptfirebasegoogle-cloud-firestore

解决方案


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

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

stringify将原始产品(编辑前)和当前产品的副本进行比较。我假设如果它们不相等,则某些事情发生了变化。

这种方法有一些注意事项,特别是如果您的对象结构很复杂,因为可能存在 stringify 不会创建完全相同的字符串的情况。但我没有遇到过这种情况。


推荐阅读