Angular 更改表单字段值

Angular 更改表单字段值,angular,angular2-forms,angular2-formbuilder,Angular,Angular2 Forms,Angular2 Formbuilder,当我提交表格时,我有这个功能 login(form: NgForm) 如果我尝试以下方法 console.log(form.value.password); // this works perfect. 但这不起作用 form.value.password = '' 登录失败后,我想重置密码字段。您需要使用角度表单控件/组上可用的setValue()或patchValue()方法,例如 form.patchValue({ username: '', // or whatever fie

当我提交表格时,我有这个功能

login(form: NgForm)
如果我尝试以下方法

console.log(form.value.password); // this works perfect.
但这不起作用

form.value.password = ''

登录失败后,我想重置密码字段。

您需要使用角度表单控件/组上可用的
setValue()
patchValue()
方法,例如

form.patchValue({
  username: '', // or whatever fields you have
  password: ''
});

请参见

,但这不起作用

form.value.password = ''
因为form.value返回表单的值,并且它是AbstractControl的只读属性部分

来自angular2的源代码

/**
 * The value of the control.
 */
readonly value: any;
您可以根据需要使用重置。

/** *重置控件。抽象方法(在子类中实现)。 */

setValue或patchValue的用法

this.yourForm.controls['password'].setValue(password)
或者您可以为整个表单赋值

this.yourForm.setValue(data);

当在整个表单上使用setValue时,您必须提供每个控件,否则它会抛出错误,如属性缺少paychValue,如果您仅在元素上发送,则另一方面可以处理。

不确定您使用的是模板驱动的表单还是模型驱动的表单。但这两种方法都适用

为此,只需使用
reset()
,就可以重置单表单控件:

登录(表单){
//执行任何逻辑,如果登录失败,请按如下方式重置
form.controls.password.reset()
}

我可以设置File类型的值吗?。例如:form.controls['image'].setValue(event.target.files[0])。我和Angular 7一起工作,我忘了我应该重新设置表单
this.yourForm.setValue(data);