2017-09-12 14 views
0

FormGroup & FormControlを使用して手動でフォームモデルを作成していますが、それが対応する入力にFormControlをバインドすると予期しない結果が発生します。角度 - FormControlがformControlNameに正しくバインドされていません

私はモデルを作成し、この方法でhtmlにバインドします。

private initFormModel(user: User): FormGroup { 
 
    const _formGroup = new FormGroup({ 
 
    fullname: new FormControl({ value: user.name }) 
 
    }); 
 
    return _formGroup; 
 
}
<!-- This is part of the html code/I set on my component class this.form = this.initFormModel(... --> 
 

 
<form (ngSubmit)="onSubmit()" [formGroup]="form" novalidate> 
 

 
<!-- .... ---> 
 

 
<input type="text" formControlName="fullname" name="fullname">

結果

enter image description here

あなたは私はそれが何も変わりませんFormBuilderを使用することが予想される場合には何も間違っては、ありません。私は[Object object]を自分の入力にバインドしました。面白いのは、フォームコントロール定義にdisabled属性を追加するとうまくいくことです。 Like:fullname: new FormControl({ value: user.name, disabled: false }) FormControl(fullname: [user.name, ...])を作成するためにArray表記を使用すると、テキストがバインドされています。

は、念のために私は現在the documentationからの角度v2.4.10

答えて

2

を使用しています:FormControlをインスタンス化する場合

、あなたは最初の引数として初期値を渡すことができます。例:

const ctrl = new FormControl('some value'); 

あなたはまた、値と制御が無効であるか否かの両方を含むインスタンスのフォームの状態オブジェクトとコントロールを初期化することができます。 無効なキーなしで値キーを使用することはできません。どちらもこの初期化方法を使用する必要があります。

const ctrl = new FormControl({value: 'n/a', disabled: true}); 

(強調鉱山)

+0

これは、私はまた、私は 'FormControl'ための角度のソースコードを見てみました素晴らしいです。これをあなたの答えに加えることができますか? https://github.com/angular/angular/blob/4.4.0-RC.0/packages/forms/src/model.ts#L579 formStateの型がobjectと等しい場合は、値をチェックし、無効にされたプロパティが存在するようにします。それ以外の場合はfalseを返し、 'this._value'は決して設定されません。これはhttps://github.com/angular/angular/blob/4.4.0-RC.0/packages/forms/src/model.ts#L767の使用行です –

関連する問題