良好的做法角反应形式,编辑对象

时间:2018-12-03 10:56:34

标签: angular angular-reactive-forms

我一直在学习在角度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属性(因为我们不使用它的形式)。

我只想知道这种情况下的最佳实践。

1 个答案:

答案 0 :(得分:1)

反应形式和模板驱动形式的原理非常不同:您不能真正比较它们并期望两者具有相同的效果。

In the documentation, under "Key differences",您将看到它们的用途截然不同。

总结起来,模板驱动直接更新模型,而反应式表单复制模型并更新模型副本

如果要使用反应形式更新模型,则可以按需执行(例如,在进行HTTP调用之前)。

它们都有优点和缺点,您应该相应地使用它们。它们是互补,而不是竞争

相关问题