更改ngForm字段值

Mic*_*lis 2 angular2-forms angular2-formbuilder angular

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

login(form: NgForm)
Run Code Online (Sandbox Code Playgroud)

如果我尝试以下

console.log(form.value.password); // this works perfect.
Run Code Online (Sandbox Code Playgroud)

但这不起作用

form.value.password = ''
Run Code Online (Sandbox Code Playgroud)

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

Jor*_*ngh 8

但这不起作用

form.value.password = ''
Run Code Online (Sandbox Code Playgroud)

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

来自angular2源代码

/**
 * The value of the control.
 */
readonly value: any;
Run Code Online (Sandbox Code Playgroud)

您可以使用重置来达到目的.

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

abstract reset(value?: any, options?: Object): void;
Run Code Online (Sandbox Code Playgroud)

setValue或patchValue的用法.

this.yourForm.controls['password'].setValue(password)
Run Code Online (Sandbox Code Playgroud)

或者您可以为整个表单指定值

this.yourForm.setValue(data);
Run Code Online (Sandbox Code Playgroud)

当在整个表单上使用setValue然后你有ro提供每个控件,否则它抛出错误就像属性缺少paychValue在另一方面可以处理如果你只发送元素.