在我使用 Angular 表单的代码库中,用户打开一个要编辑的条目,并且各个字段都预先填充了当前值。该Save按钮开始禁用,因为没有任何东西dirty
在角度意义上。如果用户输入一个字段并开始输入,该字段将变脏并Save启用。
在编辑表单值的过程中,如果出现以下情况,则会进行禁用Save按钮的检查:
- 必填字段为空,
- 需要特定格式的字段有无效条目,
- 条目比允许的长,
......等等,最后
- 值,即使
dirty
,现在在用户打开表单时恢复为原始值。
这是它的精髓:
<!-- template code -->
<input formControlName="name" type="text" (keyup)="handleNameChange()">
. . .
<button [disabled]="!updateForm.valid || disableSave">Save</button>
. . .
// backing code
public handleNameChange(): void {
this.disableSave = this.updateForm.controls.name.value === this.original.name;
}
两个问题:
A. 虽然从一个角度来看它似乎“显而易见”(没有任何改变,所以为什么要保存它?),最后一点是 UX 意义上的常见最佳实践吗?希望看到有关它的文章或参考资料。
B. Angular 表单有没有办法自动执行此操作(即,将字段设置回非脏),而无需添加显式代码来检查新值与旧值的对比?