最佳答案
使用角度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()
中,我可以对表单值应用各种逻辑,并根据需要映射它们。但是,我不想映射表单中的每个输入值。我只想看到整个 employee
模型在更新时的值,这种方法类似于 [(ngModel)]="example.name"
,并且显示在模板中的 json 管道中。我该怎么做呢?