如何使用子组件生成动态表单

时间:2020-07-10 14:56:26

标签: angular forms angular-material

我正在实现一个动态表单,可以通过“添加”按钮创建该表单。 这种动态形式也是一个组件,我们称为子组件。

父组件看起来像这样:

<div *ngFor="let station of stationFormData.controls; let stationFormIndex = index"
         class="list-group list-group-flush">
      <div [formGroup]="station">
          <app-charge-station-modification-contact [contacts]="stations[stationFormIndex]?.contact"[form]="station"></app-charge-station-modification-contact>
 </div>
<button mat-icon-button matTooltip="Add New Station" (click)="addNewStation()">
      <mat-icon class="add-button-enabled-color">add</mat-icon>
    </button>
          
</div>

addNewStation功能如下:

public addNewStation(): void {
    console.log(this.stations);
    this.stationFormData.push(this.fb.group({
      contact: this.fb.array([this.fb.group({
        name: { value: '', disabled: false },
      })]),
      })]),
      
    }));
  }

所以此方法将创建一个称为contact的新表单。

此联系人是子组件。

看起来像这样:

<div fxLayout="row" class="parameterWrapper">
  <div class="parameterLabel">contact</div>
    <div *ngFor="let contactForm of contactFormData.controls; let contactFormIndex = index"
       class="list-group list-group-flush">
    <div [formGroup]="contactForm">
      <div fxLayout="row" class="parameterWrapper">
        <div class="parameterLabelStep">name</div>
        <label>
          <input class="parameterInput" type="text" formControlName="name"
                 [disabled]="contactForm.controls.name.disabled"
                 [value]="contactForm.controls.name">
        </label>
      </div>
        </div>
      </div>
    </div>
  </div>
</div>

我的问题是,我不知道如何实现由子组件生成的动态表单。

我尝试过几次,但是总是出错。

任何解决方案?

0 个答案:

没有答案