Как добавить значение в группу форм с помощью элемента управления «Добавить»

#angular #typescript

Вопрос:

Как мы добавляем элементы управления в группу форм ? Я попробовал ff ниже, но он не добавляет. Есть идеи? Спасибо.

 modelForm: FormGroup;

//this happens on ngOnit
this.modelForm = this._createModelForm();

private _createModelForm(): FormGroup {
    return this.formBuilder.group({
      id: [this.model.id || 0],
      summary: this.model.summary,
      dealType: this.model.dealType,
      dealTypeValues: this.model.dealTypeValues,
    });

  }
 

Например, я хочу добавить

this.modelForm.addControl('dealType',new FormControl('Partner Location Submission'));

но, похоже, не работает, есть идеи, ребята? Спасибо.

Комментарии:

1. В вашей группе форм уже есть элемент управления формой с именем «Тип сделки». и оператор addControl (), который вы используете, относится к тому же элементу управления.

2. Если вам нужно несколько экземпляров набора элементов управления, вы можете использовать FormArray

Ответ №1:

Вы неправильно инициализируете форму. Если вы откроете консоль браузера, вы увидите ошибку Error: this.validator is not a function . Вы должны инициализировать поля с помощью FormControl

 return this.formBuilder.group({
  id: new FormControl([this.model.id || 0]),
  summary: new FormControl(this.model.summary),
  dealType: new FormControl(this.model.dealType),
  dealTypeValues: new FormControl(this.model.dealTypeValues),
});
 

Необязательно: Я предлагаю инициировать форму с помощью функции FormGroup вместо FormBuilder, потому что код будет древовидным(меньший размер пакета).

  return new FormGorup({
  id: new FormControl([this.model.id || 0]),
  summary: new FormControl(this.model.summary),
  dealType: new FormControl(this.model.dealType),
  dealTypeValues: new FormControl(this.model.dealTypeValues),
});