forms - removeAt() 上的输入中的 Angular 4 表单数组值不正确

标签 forms angular angular-reactive-forms

我创建了一个Plunker来演示这个问题

https://embed.plnkr.co/pgu7szf9ySwZSitOA5dq/

如果您删除 #2,您会看到 #5 在最后两个框中出现两次。我无法弄清楚为什么会这样。

最佳答案

你应该嵌套你的 FormArrayFormGroup像这样:

export class AppComponent implements OnInit {
    public formG: FormGroup;
    public formArray: FormArray;

    constructor(private fb: FormBuilder) { }

    ngOnInit() {
      this.createForm(); 
    }


    createForm() {
      this.formArray = this.fb.array([
        this.fb.control(1),
        this.fb.control(2),
        this.fb.control(3),
        this.fb.control(4),
        this.fb.control(5),
      ]);
      this.formG = this.fb.group({
        farray: this.formArray
      });
      console.log(this.formArray);
    }

    addQuestion() {
      this.formArray.push(this.fb.control(''));
    }

    removeQuestion(i) {
      this.formArray.removeAt(i);
    }
}

和模板:
<div class="container" [formGroup]="formG">
  <div formArrayName="farray">
    <div class="row form-inline" *ngFor="let question of formArray.controls; let i = index">
      <textarea class="form-control" [formControlName]="i"></textarea>
      <button (click)="removeQuestion(i)" class="btn btn-secondary">Remove</button>
    </div>
  </div>
</div>
<button (click)="addQuestion()" class="btn btn-secondary">Add</button>

行动中的表格:https://embed.plnkr.co/hJ0NMmzGezjMzWfYufaV/

关于forms - removeAt() 上的输入中的 Angular 4 表单数组值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44512014/

相关文章:

Angular 2 : Find out if FormControl has required validator?

angular - 如何将 Promise 转换为 Observable?

angular-reactive-forms - 如何清除 Angular Reactive Forms 中的 FormArray

angular - 根据具有反应形式的单选按钮更改形式 - Angular 2+

Angular Material 选项卡内的 Angular react 形式给出错误

javascript - 按回车键时AngularJS表单不提交

javascript - 如何让搜索栏接受输入并转到页面

Angular 2 路由 - ModuleWithProviders v NgModule

javascript - 从 jSTL foreach 调用 Javascript 函数

angular - 完成所有多个服务调用后执行代码