检测表单中的数据是否已更改

Vla*_*iuk 12 typescript angular angular-forms

我有Angular形式(不反应),在ngModel中绑定数据:

 <form #form="ngForm">
  <input [(ngModel)]="user.name">
  <input [(ngModel)]="user.color">

  <button type="submit">Save</button>
 </form>
Run Code Online (Sandbox Code Playgroud)

如果绑定数据未更改,如何禁用提交按钮?

Pra*_*ana 13

这样做,检查脏标志,告诉表格是否脏

 <button type="submit"  [disabled]="!form.dirty">Save</button>
Run Code Online (Sandbox Code Playgroud)

如果您更改其中的某个值,表单将变脏.

点击此处查看详细信息:https://angular.io/guide/forms 在此输入图像描述

  • 但是,如果我删除输入中的 1 个符号,然后再次写入(值相同,但形式已更改)怎么办? (7认同)
  • 是的,如果您更改值,它会变脏,如果您想这样做,那么您需要编写代码,因为没有直接的方法 (2认同)

sho*_*ukh 5

根据你的评论“但是如果我删除输入中的 1 个符号然后再次写入它(值相同,但形式已更改)怎么办?” 我建议这个解决方案。

总体思路是将表单的初始值存储为单独的对象(只是克隆它)。然后创建一个布尔函数,它只需迭代键值并将更新数据与初始数据进行比较。之后,只需将此函数的结果绑定到您的提交按钮[disabled]="yourCheckMethod(form.value)“。