【问题标题】:Using FormArray in angular在角度中使用 FormArray
【发布时间】:2021-10-22 18:55:58
【问题描述】:

我尝试使用formArray,但出现此错误Cannot find control with path: 'nameDriver -> 1' 我不确定我的错在哪里。这个stackblitz演示代码

HTML

<form [formGroup]="driverInfoForm">
<div class="row" formArrayName="nameDriver">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 d-flex" [formGroupName]="i"
  *ngFor="let driver of nameDriver; let i=index">
  <label>{{i+1}}.Name</label>
  <input class="form-control" type="text" id="name" name="name{{i}}"  formControlName="name" [(ngModel)]="nameDriver[i].name"><br/>
  <label>{{i+1}}.Owner Id</label>
  <input class="form-control" type="text" id="ownerId" name="ownerId{{i}}" inputmode="numeric" dashFormat formControlName="ownerId" maxLength="14">
  <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2" >
  <div class="form-group mb-0" *ngIf="i !== 0">
    
    <button class="btn btn-danger" (click)="removeDriver(i)">
      Delete
    </button>
  </div>
  <div class="form-group mb-2">
  
    <button *ngIf="i >= 0 && i < 1" type="button" [hidden]="nameDriver.length > 3" (click)="addDriver()" class="btn btn-primary">
      Add
    </button>
  </div>
</div>
</div>
</div>
</form>

组件

createDriver () {
    return new FormGroup({
      name: new FormControl(null, Validators.required),
      ownerId: new FormControl(null, Validators.required)
    })
  }

  // Add New Driver Handler
  addDriver() {
    this.nameDriver.push({
      name: '',
      ownerId: '',
    });
  }

  // Remove Driver Handler
  removeDriver(i: number) {

    if (i != 0) {
      this.nameDriver.splice(i, 1);
    } else {
      

    }

  }

【问题讨论】:

    标签: angular typescript formarray


    【解决方案1】:

    您至少必须以某种方式将新的 FormGroup 推入 FormArray。

    // Add New Driver Handler
    addDriver() {
      // push new driver control    
      (this.driverInfoForm.get('nameDriver') as FormArray).push( this.createDriver() );
      this.nameDriver.push({
        name: '',
        ownerId: '',
       });
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 2018-04-18
      • 1970-01-01
      • 2019-09-21
      • 2022-01-04
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多