2017-04-22 15 views
0
私は自分のフォームを送信すると

、私が持っているこの機能変更ngFormフィールド値

login(form: NgForm) 

私がしようとすると、次の

console.log(form.value.password); // this works perfect. 

が、これは後

form.value.password = '' 

を動作しません。ログインに失敗しましたパスワードフィールドをリセットします。

答えて

3

を参照してください例えば、角フォームコントロール/グループで利用可能setValue()またはpatchValue()方法を使用する必要があるが、これは

form.value.password = '' 
を動作しません。

form.valueはフォームの値を返します。これは読み取り専用のプロパティ部分です。 angular2ソースコードからF AbstractControl

/** 
* The value of the control. 
*/ 
readonly value: any; 

あなたはあなたの目的のためにリセットすることができます。

** ** *コントロールをリセットします。抽象メソッド(サブクラスで実装されています)。 */

abstract reset(value?: any, options?: Object): void; 

setValueまたはpatchValueの使用。

this.yourForm.controls['password'].setValue(password) 

それとも、全体のフォーム上のsetValueを使用する場合は、あなたがROそれがプロパティは一方でpaychValueを逃すようなエラーがスローそうでない場合は、すべてのコントロールを提供している全フォームに

this.yourForm.setValue(data); 

を値を割り当てることができます場合には処理することができます要素上でのみ送信します。

1

あなたが

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

docs here

2

テンプレート駆動型またはモデル駆動型を使用しているかどうかは不明です。これはどちらの場合でも有効です。

ただ、この目的のためにreset()を使用するので、その単一のフォームコントロールをリセットします。

login(form) { 
    // do whatever logic, and if login failed, reset like below 
    form.controls.password.reset() 
} 

DEMO with template-driven form

関連する問題