#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),
});