我有从服务器收到的用户列表,我在UI中显示他们在管理仪表板中,如下所示。
管理员可以浏览用户列表。此外,管理员可以使用“更新”按钮更改任何用户的数据并更新服务器中的特定用户。我正在使用NGXS localstorage插件,因此如果管理员关闭浏览器并再次打开,即使他们没有将其保存在服务器中,他们也会看到他们的更改。
问题:
我想在用户表单中显示脏数据。表单控件被认为是脏的,其数据与从服务器收到的对应数据不匹配。
我尝试了什么:
从服务器收到数据时,在商店中制作两份副本。保持一个副本清洁,同时将脏数据存储在其他副本中。每次,表单控件更改,比较两个存储中的表单控件数据,以检测它是否脏。
这个解决方案有效,但我不想存储两个版本的数据。首先,因为我在我的网站上有很多地方,我想将脏数据检测为exaplain。存储重复数据对我不起作用。
有没有一种优雅的方法来解决这个问题?
编辑
什么是行不通的:1。保存脏标志不会工作。因为当用户按ctrl + z恢复输入时,脏标志不会更改为pristine。 2.出于同样的原因,保存时间戳不会起作用。
在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