检查商店数据是否已更改

时间:2019-03-19 17:03:06

标签: angular ngrx

我有一些我从服务器上收到的用户列表,并在UI中将其显示在管理控制台中,如下所示。

enter image description here

管理员可以浏览用户列表。另外,管理员可以更改任何用户的数据,并使用“更新”按钮更新服务器中的该特定用户。 我正在使用NGXS localstorage插件,因此,如果管理员关闭浏览器并再次打开,即使他们尚未将其保存在服务器中,他们也会看到所做的更改。

问题:

我想在用户表单中显示指示脏数据。 据说表单控件是脏的,其数据与从服务器接收到的表单控件的数据不匹配。

我尝试过的事情:

从服务器接收到数据后,请在存储中制作两个副本。保持一个副本清洁,而将脏数据存储在另一个副本中。每当表单控件发生更改时,都要比较两个存储区中的表单控件数据,以检测其是否脏了。

此解决方案有效,但我不想存储两个版本的数据。主要是因为我的网站上有很多地方希望将脏数据检测为例如exaplain。存储重复数据对我不起作用。

是否有解决此问题的优雅方法?

修改

什么不起作用: 1.保存脏标志将不起作用。因为当用户按ctrl + z恢复输入时,脏标志不会更改为原始状态。 2.出于同样的原因,保存时间戳记无效。

1 个答案:

答案 0 :(得分:1)

实际上在Angular中有一个dirty标志。这对于检查放置在表单上的原始数据是否变脏(听起来像您要完成的工作)很有用。

所以您真正需要实现的就是这样:

<input id="name" name="name" class="form-control" [(ngModel)]="hero.name" #name="ngModel" >
<div *ngIf="name.dirty">Name is dirty.</div>

如果要查看与服务器上的内容相比是否“脏”,则需要一些异步过程将当前表单数据发送到服务器上,以将其与数据库中存储的内容进行比较反之亦然。

有关更多信息,请参见此处:https://angular.io/guide/form-validation