禁用响应式表单中的输入字段

29 浏览
0 Comments

禁用响应式表单中的输入字段

我已经尝试了遵循其他答案的示例,但我没有成功!

我创建了一个反应式表单(即,动态表单),并想在任何时候禁用某些字段。我的表单代码:

this.form = this._fb.group({
  name: ['', Validators.required],
  options: this._fb.array([])
});
const control = this.form.controls['options'];
control.push(this._fb.group({
  value: ['']
}));

我的HTML代码:


我为了简化代码,想禁用选择类型的字段。我尝试了以下方法:

form = new FormGroup({
  first: new FormControl({value: '', disabled: true}, Validators.required),
});

但不起作用!有没有人有建议?

admin 更改状态以发布 2023年5月24日
0
0 Comments

注意

如果你正在使用一个带有条件变量来创建一个表单,并试图稍后更改它,那么它将不会起作用,即表单不会变化

例如

this.isDisabled = true;
this.cardForm = this.fb.group({
    number: {value: null, disabled: this.isDisabled},
});

如果你更改了变量

this.isDisabled = false;

表单将没有变化。你应该使用

this.cardForm.get('number').disable();

另外,你应该使用patchValue方法来更改值:

this.cardForm.patchValue({
    number: '1703'
});

0
0 Comments

name: [{value: '', disabled: true}, Validators.required],
name: [{value: '', disabled: this.isDisabled}, Validators.required],

或者

this.form.controls['name'].disable();

0