有条件地将formGroup添加到另一个formGroup angular2

时间:2017-07-20 13:49:49

标签: angular angular2-forms

我正在尝试将formGroup添加到我的整体表单中,条件是在我的情况下特定字段属于某种类型。我添加此formGroup的功能如下所示:

  initSocial() {
      const group = <FormGroup>this.cardForm;
        group.addControl(
          'social': this._fb.group({
            'fb': new FormControl(this.currentCard.social.fb),
            'yt': new FormControl(this.currentCard.social.yt),
            'ig': new FormControl(this.currentCard.social.ig),
            'tw': new FormControl(this.currentCard.social.tw),
          })
        )
  }

现在我在'社交'之后得到一个打字稿错误,说','是预期的。我无法测试这个以查看addControl()是否可以工作。

我的触发initSocial的函数在ngOnInit中,如下所示:

      if(this.currentCard.cardType === "brand"){
        this.initSocial();
      }

非常感谢任何帮助/提示/建议。

1 个答案:

答案 0 :(得分:3)

addControl()功能如下:

/**
 * Add a control to this group.
 * @param {?} name
 * @param {?} control
 * @return {?}
 */
FormGroup.prototype.addControl = function (name, control) {
    this.registerControl(name, control);
    this.updateValueAndValidity();
    this._onCollectionChange();
};

并且需要2个参数: name control ,用逗号分隔。 因此,只需尝试在社交&#39;之后替换分号()。用逗号():

group.addControl('social', this._fb.group({
  fb: this.currentCard.social.fb,
  yt: this.currentCard.social.yt,
  ig: this.currentCard.social.ig,
  tw: this.currentCard.social.tw,
}))

另外,您不需要new FormControl(DEFAULT_VALUE),表单构建器已经