无法分配给 'value',因为它是常量或只读 属性。 Angular 6
Cannot assign to 'value' because it is a constant or a read-only property. Angular 6
我正在尝试使用 FormControl
为 Mat 输入设置一个值
<input name="contact" matInput [matAutocomplete]="contactAuto" [formControl]="myControl" #contact (blur)="validateInput($event, contact.value)" >
在我的
myControl = new FormControl();
this.myControl.value = 'contact';
上面的代码工作正常,但我得到一个错误
Cannot assign to 'value' because it is a constant or a read-only property
我是不是漏掉了什么?
这不是设置值的方式。正确的设置方法是使用 setValue() or patchValue()
this.myControl.setValue('contact');
不允许像您这样设置值。您需要使用 setValue 或 patchValue 方法。
https://angular.io/api/forms/FormControl#setvalue
https://angular.io/api/forms/FormControl#patchvalue
对于 FormControl,它们是相同的,但这些方法对于 FormGroup 的工作方式不同。
关于手动使其无效的联系表,这个对我有用this.contactForm.setErrors({ valid: false });
您可以使用 setValue
或 patchValue
来实现。区别如下
PatchValue
用于仅更新 FormGroup 或 FormArray 的元素的子集。它只会更新匹配的对象并忽略其余的。
SetValue
用于更新 FormControl、FormGroup 或 FormArray。当我们使用它来更新 FormGroup 或 FormArray 时,SetValue 要求对象必须与 FormGroup 或 FormArray 的结构完全匹配。否则会报错。
我正在尝试使用 FormControl
为 Mat 输入设置一个值<input name="contact" matInput [matAutocomplete]="contactAuto" [formControl]="myControl" #contact (blur)="validateInput($event, contact.value)" >
在我的
myControl = new FormControl();
this.myControl.value = 'contact';
上面的代码工作正常,但我得到一个错误
Cannot assign to 'value' because it is a constant or a read-only property
我是不是漏掉了什么?
这不是设置值的方式。正确的设置方法是使用 setValue() or patchValue()
this.myControl.setValue('contact');
不允许像您这样设置值。您需要使用 setValue 或 patchValue 方法。
https://angular.io/api/forms/FormControl#setvalue
https://angular.io/api/forms/FormControl#patchvalue
对于 FormControl,它们是相同的,但这些方法对于 FormGroup 的工作方式不同。
关于手动使其无效的联系表,这个对我有用this.contactForm.setErrors({ valid: false });
您可以使用 setValue
或 patchValue
来实现。区别如下
PatchValue
用于仅更新 FormGroup 或 FormArray 的元素的子集。它只会更新匹配的对象并忽略其余的。SetValue
用于更新 FormControl、FormGroup 或 FormArray。当我们使用它来更新 FormGroup 或 FormArray 时,SetValue 要求对象必须与 FormGroup 或 FormArray 的结构完全匹配。否则会报错。