如果我更改并恢复angular2中的值,如何保持表单处于原始状态?

时间:2017-11-08 09:37:51

标签: forms angular

当我想编辑我的页面时,我有一个从网络应用程序打开的表单。
如果我没有更改任何值并提交表单,那么我的页面应保持其原始状态,但它正在改变状态。 为了避免这种情况,我使用了原始财产。但是,如果我将值从旧更改为新,然后再从new更改为旧,那么pristine就无法正常工作。

在Angular 2中处理表单的更好的解决方案是什么?

<button class="button large w100 primary" type="button" (click)="submitEntry(timecardForm.pristine)">
    <i class="fa fa-floppy-o"></i> {{ 'global.apply' | translate }}
</button>

1 个答案:

答案 0 :(得分:0)

我曾经遇到过这个案子。

我做了什么(我使用的是反应形式,但你可以使用你想要的任何东西)是当用户进入页面时,我获取所有表单数据,然后像这样存储

let initialFormValue = JSON.stringify(this.myForm.value);

然后用户可以改变他想要的一切。当他想离开页面时(在你的情况下,取消表单提交),剩下的就是比较两个字符串。这会给出

let actualFormValue = JSON.stringify(this.myForm.value);
if (this.initialFormValue === actualFormValue) { /* alert the user */ }

我希望这会有所帮助。如果没有,请随时询问!