无法分配给 '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 });

您可以使用 setValuepatchValue 来实现。区别如下

  • PatchValue 用于仅更新 FormGroup 或 FormArray 的元素的子集。它只会更新匹配的对象并忽略其余的。
  • SetValue 用于更新 FormControl、FormGroup 或 FormArray。当我们使用它来更新 FormGroup 或 FormArray 时,SetValue 要求对象必须与 FormGroup 或 FormArray 的结构完全匹配。否则会报错。