Form Builder (Angular2 Beta 1、TypoScript) を使用して作成されたフォームがあります。つまり、次のようなものがありconstructor
ます。
this.form = this._formBuilder.group({
'username': ['', Validators.required],
'email': ['', Validators.required]
});
フォームが表示され、これまでのところすべてが順調です。私が実際に理解していないのは、データ (この場合は User オブジェクト) をリモート サービス (または他の非同期読み込みメカニズム) から読み込むときにバインドを処理する方法です。
私が試したことは、次のとおりです。
constructor
またはでデータを非同期にロードしますngOnInit
。問題: ロードが開始される前であっても、例外がスローされます (「未定義のプロパティ 'validator' を読み取れません...」)constructor
またはでデータを非同期にロードしますngOnInit
が、その前に空のフォームを作成します。問題: 検証が機能しません。- 私が期待していたのは、フォームデータをオブジェクトのプロパティにバインドし、
User
そのオブジェクトのプロパティを設定することです。問題: 例外ではありませんが、データがフォームに表示されません。
これを機能させるには、よりスマートでより良い方法が必要だと思いますか?私は Angular2 にかなり慣れていないので、質問がばかげていないことを願っています …</p>
- - アップデート - -
ngFormModel
まず、重要な場合に備えて、フォームで使用することを忘れていました。
@Thierry: 「フォームにバインドする一時的な空のオブジェクト」は、私がやろうとしたこと (上記の 3 番目のアプローチ) だと思いますが、うまくいきませんでした。正確には、私はこれを試しました:
constructor(private _formBuilder:FormBuilder) {
this.user = new User;
this.user.username = 'abc';
this.form = this._formBuilder.group({
'username': [this.user.username, Validators.required],
});
}
これはユーザー名を表示しますが、コンストラクターの最後に設定する行を移動しても機能しませんthis.user.username
。データバインディングがこれを処理することを期待していたので、これはかなり驚くべきことです。