问题描述
{
"$group": {
"_id": {
"language": "$language","sId": "$sId"
},"count": {
"$first": {
"$sum": "$count"
}
}
}
}
现在在我的项目中,用户可以编辑配置文件信息,然后单击按钮即可进入“编辑”模式。
在进入“编辑”模式时,我将复制当前Profile对象,因此,如果用户还原更改(使用“取消”按钮),我将还原原始数据。
this.myAPI.getProfile().subscribe(result => {
this.currentProfile = result;
});
一切正常,但是我遇到了一个问题,如果没有更改任何信息,我想禁用“保存”按钮,因此请进行以下检查:
this.currentProfilecopy = JSON.parse(JSON.stringify(this.currentProfile));
问题是,此检查永远不会返回true。
我想这与this.currentProfile == this.currentProfilecopy
有关。
我也尝试过:
JSON.stringify
这也总是返回false。
实现此目的的正确方法是什么?
重要提示::我无法使用LoDash,只能使用Angular方法,因为我使用的是构建Angular代码的框架,因此无法导入外部库。 我也不能使用诸如valueChanges之类的东西,我需要通过比较原始对象和它的副本来做到这一点。
解决方法
没有一种用于比较对象的解决方案。这完全取决于您的对象及其所保存的数据类型。
根据您的有限信息,我只能建议根据JSON字符串进行比较,如下所示:
JSON.stringify(this.currentProfile) === JSON.stringify(this.currentProfileCopy)
您可以仅使用JSON.stringify
方法进行比较。
JSON.stringify(this.currentProfile) === JSON.stringify(this.currentProfileCopy)
,
您可以使用lodash
库。要比较两个对象,可以使用isEqual
函数。