7

我正在寻找Angular 2 文档,但无法找到有关如何使用formGroup的最佳实践。

是否必须formGroup用表单标签括起来?

我看过这个堆栈溢出问题:

formGroup 需要一个 FormGroup 实例

我创建了这个组件模板:

<div [formGroup]="infoIdentityForm">
  <div class="info-identity_title" *ngIf="showTitle">
    <div class="group-title">Titre</div>
    <div class="group-radio">
      <span *ngFor="let choice of enumTitleValue">
        <label>{{choice}}</label>
        <input type="radio" formControlName="title" name="title" [id]="choice"/>
      </span>
    </div>
  </div>
  <div class="info-identity_firstname">
    <div class="group-title">Prénom</div>
    <div class="group-input">
      <input type="text" class="form-control" formControlName="firstName" maxlength="25">
    </div>
  </div>
  <div class="info-identity_lastname">
    <div class="group-title">Nom</div>
    <div class="group-input">
      <input type="text" class="form-control" formControlName="lastName" maxlength="25">
    </div>
  </div>
</div>

我试图避免使用嵌套的表单标签

4

1 回答 1

9

您正在寻找的是formGroupName指令

该指令只能与父 FormGroupDirective(选择器:[formGroup])一起使用。

它接受您要链接的嵌套 FormGroup 的字符串名称,并将在您传递给 FormGroupDirective 的父 FormGroup 实例中查找使用该名称注册的 FormGroup。

当您想要将表单的子组与其他表单分开验证时,或者当您想要将某些控件的值分组到它们自己的嵌套对象中时,嵌套表单组可以派上用场。

https://angular.io/docs/ts/latest/api/forms/index/FormGroupName-directive.html

<div formGroupName="infoIdentityForm">
</div>

根据文档,需要<form [formGroup]="formProperty">在某个时间点进行合法定义并避免<form>使用多个标签。

如果您有一个子组件,您仍然需要它,[formGroup]但它可以不在<form>标签中。如果您想在一个大表单中使用它,那么您需要从父级输入您的 FormGroup 并将其设置为:

<td [formGroup]="parentGroup">
  <input type="text" formControlName="myControl"
</td>
@Input() parentGroup: FormGroup;
于 2016-11-15T16:49:27.270 回答