Итак, ваша проблема в том, что вы хотите создать форму, используя класс view-model.ts
.
Проблема с созданием формы путем передачи объекта:
this.fb.group(new ViewModel())
Этот построитель форм использует только состояние в этом объекте для создания значений формы. Это не набор инструкций о том, как построить более сложную форму с проверкой. Вам нужно создавать сложные формы, взаимодействуя со сборщиком форм для каждого элемента управления.
Для этого вы можете позволить своей модели представления построить форму:
export class ViewModel {
description = '';
private form: FormGroup;
createForm(formBuilder: FormBuilder): FormGroup {
this.form = formBuilder.group({
description: formBuilder.control(this.description, {
validators: [
Validators.required
]
})
});
return this.form;
}
update() {
this.description = this.form.get('description').value;
}
}
Так что теперь ваш компонент просто получает форма выглядит следующим образом:
this.groupForm = this.viewModel.createForm(this.fb);
И при отправке ваш компонент сообщает вашей модели представления, что он может обновить себя из формы.
onSubmit() {
this.viewModel.update();
}
DEMO: https://stackblitz.com/edit/angular-tm8abx