условно добавить formGroup в другую formGroup angular2

Я пытаюсь добавить 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();
      }

Любая помощь / советы / предложения будут очень благодарны.


person Brian Stanley    schedule 20.07.2017    source источник
comment
вам не хватает {} около 'social'. Пожалуйста, не публикуйте, почему этот код не работает, в виде вопросов.   -  person Reactgular    schedule 20.07.2017
comment
это также может помочь: stackoverflow.com/questions/55334283/   -  person Lonely    schedule 25.03.2019


Ответы (1)


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, разделенных запятой. Итак, просто попробуйте заменить точку с запятой (:) после слова social на запятую (,):

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), конструктор форм уже делает это

person Andriy    schedule 20.07.2017
comment
Господи! Это было до боли просто. Это заставило функцию работать правильно. Спасибо @Andriy! - person Brian Stanley; 20.07.2017