首页 > 解决方案 > 使用 FormArray 在运行时创建表单控件

问题描述

想练习FormArray 所以我有这个:

  myFrom: FormGroup;

  constructor(fb: FormBuilder) {
    this.myFrom = fb.group({
      firstName: ['', Validators.required],
      lastName: [''],
      address: fb.group({
        street: ['', Validators.required],
        city: [''],
        zip: [''],
      }),
      aliases: fb.array(
        [fb.control('')]
      )
    });
  }

  get aliases() {
    return this.myFrom.get('aliases') as FormArray;
  }

所以aliases是在运行时使用FormArray. 所以我添加了一个可以连接到按钮的方法:

  addAnotherAlias() {
    this.aliases.push(this.myFrom.control(''));
  }

但是我做错了,因为错误control不是属性myForm,我应该controls改用。

标签: angularformarray

解决方案


OK 发现问题。控件是 FormBuilder 工厂方法的一部分。所以我应该说:

  addAnotherAlias() {
    this.aliases.push(this.fb.control(''));
  }

推荐阅读