У меня есть существующая FormGroup с некоторыми элементами управления, которые показаны в шаблоне. Теперь я хочу заменить FormGroup другой FormGroup с немного другими полями.
this.removeAllControls(); // removes Controls of this.formGroup
const newFormGroup: FormGroup = FormGroupFactory.createFormGroup(......);
this.setControls(newFormGroup);
Сначала я удалил все элементы управления this.formGroup. Затем я создаю новую группу FormGroup с некоторыми новыми элементами управления, а некоторые остались прежними (то же имя FormControlName, но с другим значением и валидатором).
После этого я вызываю:
private setControls(newFormGroup: FormGroup): void {
Object.keys(newFormGroup.controls).forEach(key => {
const formControlCopy: FormControl = newFormGroup.get(key) as FormControl;
const newFormControl: FormControl = new FormControl(formControlCopy.value, {updateOn: formControlCopy.updateOn, validators: formControlCopy.validator}, formControlCopy.asyncValidator);
this.formGroup.addControl(key, newFormControl);
});
}
После того, как я добавив новые элементы управления, шаблон теряет соединение с FormControls ... поэтому, если я попытаюсь this.formGroup.get(nameWhichWasInTheOldAndTheNewFormGroup).setValue('..')
Значение установлено, но представление не изменяется ....