我一直在学习在角度7中使用反应式,但是在理解如何使用它时遇到了一些麻烦。
示例:
Export class Person {
id: string,
name: string
}
Export class myFormComponent implememts OnInit {
personForm: FormGroup;
@Input()
person: Person;
Constructor(private fb: FormBuilder) {}
NgOnInit() {
this.personForm = this.fb.group({
name: [this.person.name, [Validators.required]]
});
}
}
<form [formGroup]="personForm" >
<input formControlName="name" >
</form>
我的组件在输入中输入了要编辑的人员对象,但是看到我们没有使用([ngModel])
时,值并未在部件参数中传递的人员模型内部进行修改。
现在,我知道我们可以在提交时读取表单的值,并一一或通过影响所有表单值来影响对属性的更改,但这意味着我们缺少id属性(因为我们不使用它的形式)。
我只想知道这种情况下的最佳实践。
答案 0 :(得分:1)
反应形式和模板驱动形式的原理非常不同:您不能真正比较它们并期望两者具有相同的效果。
In the documentation, under "Key differences",您将看到它们的用途截然不同。
总结起来,模板驱动直接更新模型,而反应式表单复制模型并更新模型副本。
如果要使用反应形式更新模型,则可以按需执行(例如,在进行HTTP调用之前)。
它们都有优点和缺点,您应该相应地使用它们。它们是互补,而不是竞争。