【问题标题】:Reset of reactive form removes disabled fields重置反应形式会删除禁用的字段
【发布时间】:2018-01-26 14:57:23
【问题描述】:

如何防止在重置时删除禁用的字段。 这是我的代码的一部分:

this.updateInformationForm = this.fb.group({
  'first_name': [first_name, Validators.required],
  'last_name': [last_name, Validators.required],
  'address1': [address1, Validators.required],
  'address2': [address2, Validators.required],
  'city': [city, Validators.required],
  'state': [state, Validators.required],
  'zip': [zip, Validators.required],
  'phone': [phone, Validators.required],
  'dob': [dob, Validators.required],
  'gender': [gender, Validators.required],
  'email': [email, Validators.required],
});

this.updateInformationForm.controls['first_name'].disable();
this.updateInformationForm.controls['last_name'].disable();
this.updateInformationForm.controls['email'].disable();

还有我的重置方法:

  clear(): void {
    this.updateInformationForm.reset();
  }

【问题讨论】:

  • 你不能把禁用字段机制放在一个方法中,然后在重置之后也调用它吗?

标签: angular validation angular-reactive-forms


【解决方案1】:

改为在构建表单时添加禁用。假设这里你不想在重置时设置任何默认值,而只是清空所有字段,但是如果你在构建表单时最初将某个字段设置为禁用,重置后它将保持禁用状态:

constructor(private fb: FormBuilder) {
  this.updateInformationForm = this.fb.group({
    // set as disabled already here!
    first_name: [{ value: 'first name', disabled: true }],
    last_name: ['last name']
  });
}

DEMO

【讨论】:

  • @eddy 旧答案,但即使在使用 angular 9 时似乎也能正常工作:stackblitz.com/edit/…
  • 此解决方案在 DEMO 中不再有效。 “名字”也被重置。
猜你喜欢
  • 2019-05-25
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2017-09-12
  • 2017-12-15
相关资源
最近更新 更多