ali*_*990 12 angular angular-reactive-forms angular-forms angular7
有没有办法将反应式表单组重置为其初始值而不是使用.reset()方法将其清空?
我有以下stackblitz,其中默认选择的值为Parent,如果用户将其更改为姐妹,并希望将表单设置为初始值,请单击重置按钮来执行此操作。
目前,我尝试过:
this.formGroup.reset();
//Or
this.formGroup.markAsPristine;
//Or
this.formGroup.markAsTouched
Run Code Online (Sandbox Code Playgroud)
在.reset()完全地重置表单。
PS 有些人可能会说用户可以重新选择默认值而不是点击重置按钮。但就我而言,我有一个巨大的用户表单,他需要在其中更新他的信息,如果他在某些值中弄错了,他可能需要重置为初始值。
Fer*_*res 21
您可以保存表单初始值:
this.initialValues = this.formGroup.value;
Run Code Online (Sandbox Code Playgroud)
然后将这些值传递给 reset 函数:
this.formGroup.reset(this.initialValues);
Run Code Online (Sandbox Code Playgroud)
小智 9
Tou 应该使控件为非空 // 如果设置此标志,控件将重置为初始值。
const cat = new FormControl('tabby', {nonNullable: true});
cat.reset();
Run Code Online (Sandbox Code Playgroud)
cat.value 是“虎斑猫”
小智 6
请在这里找到 stackbliz
https://stackblitz.com/edit/angular-material-ciztu9
Angular 提供了reset(formState:any = null),你可以将初始的formState/对象作为第一个参数传递
欲了解更多信息https://angular.io/api/forms/FormControl#reset
setForm()创建一个将在构造函数中调用的方法并reset()
setForm() {
this.formGroup = this.fb.group({
'family_relation': new FormControl(this.familyRelationArray[0]['family_relation_id'])
});
}
Run Code Online (Sandbox Code Playgroud)
(从构造函数中删除设置初始值的代码)
resetForm()现在看起来像:
reset() {
this.formGroup.reset();
//Or
this.formGroup.markAsPristine;
//Or
this.formGroup.markAsTouched
this.setForm();
}
Run Code Online (Sandbox Code Playgroud)
和构造函数:
constructor(private fb: FormBuilder) {
this.familyRelationArray = [
{
family_relation_id: 1,
family_relation_type: 'Parent'
},
{
family_relation_id: 2,
family_relation_type: 'Sister'
}
];
this.setForm();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13740 次 |
| 最近记录: |