在[formGroup] formGroupName上需要一些建议,[formControl] formControlName

时间:2018-11-16 20:12:50

标签: angular angular6 angular2-forms angular-reactive-forms angular-formbuilder

我正在寻找现有的问题答案 What is the difference between formControlName and FormControl?

并且仍然难以完全理解何时在formControlName上使用[formControl]。

我想根据[Paul Paulsosotha的评论]得出的结论是,当我使用类似于

的FormBuilder创建控件时,
constructor(fb: FormBuilder) {
    this.myForm = fb.group({
        'fullname': ['', Validators.required],
        'gender': []
    });
}

然后我应该使用类似的东西

<form [formGroup]="myForm">

  <label>
    First Name:
    <input type="text" formControlName="fullname">
  </label>

  <label>
    Last Name:
    <input type="text" formControlName="gender">
  </label>

</form>

如果我要声明如下形式(基于@GünterZöchbaueransewer):

constructor(fb: FormBuilder) {
    this.myForm = fb.group({
        'fullname': new FormControl('');
        'gender': new FormControl('')
    });
}

使用以下语法:

<form [formGroup]="myForm">

  <label>
    First Name:
    <input type="text" [formControl]="fullname">
  </label>

  <label>
    Last Name:
    <input type="text" [formControl]="gender">
  </label>

</form>

以上是否正确?同样,[formGroup]和formGroupName也是一样:什么时候您要在[formGroup]上使用formGroupName? 我无法为此提供一个示例。您能解释一下为什么一个人可以使用另一个方法吗?或者推荐的做法是(如果有的话)?

1 个答案:

答案 0 :(得分:2)

基本上,当表单是动态表单时,可以使用[formControl]或[formControlName];当具有固定表单时,只需使用formControlName。

之所以会发生这种情况,是因为angular中的[]结构是一种绑定方式,因此它会一直监视组件中所有属性的值。

  • [formControl] =“ propertyInComponent”
  • [formControlName] =“ propertyInComponent”
  • formControlName =“ nameGivenByYou”