Angular 2 を使用すると、テンプレート駆動型フォームでの双方向バインディングが簡単になります。バナナ ボックス構文を使用するだけです。モデル駆動型のフォームでこの動作をどのように再現しますか?
たとえば、これは標準的なリアクティブ フォームです。見た目よりもはるかに複雑で、さまざまな入力とビジネス ロジックが非常に多く、テンプレート駆動型のアプローチよりもモデル駆動型のアプローチに適しているとしましょう。
export class ExampleModel {
public name: string;
// ... lots of other inputs
}
@Component({
template: `
<form [formGroup]="form">
<input type="text" formControlName="name">
... lots of other inputs
</form>
<h4>Example values: {{example | json}}</h4>
`
})
export class ExampleComponent {
public form: FormGroup;
public example: ExampleModel = new ExampleModel();
constructor(private _fb: FormBuilder) {
this.form = this._fb.group({
name: [ this.example.name, Validators.required ]
// lots of other inputs
});
}
this.form.valueChanges.subscribe({
form => {
console.info('form values', form);
}
});
}
では、subscribe()
あらゆる種類のロジックをフォーム値に適用し、必要に応じてマップできます。ただし、フォームからのすべての入力値をマップしたくありません。と同様のアプローチで、テンプレートの json パイプに表示されるemployee
ように、更新されるモデル全体の値を確認したいだけです。[(ngModel)]="example.name"
どうすればこれを達成できますか?