У меня проблема с реактивными формами.Обновление класса модели, когда пользователь изменяет ввод, является прямым.Но мне нужно поступить противоположным образом: программно изменить модель и увидеть изменения в HTML-форме.
Упрощенный код:
this.user = new User();
А затем:
this.form = this.fb.group({
name: new FormControl(this.user.name, [Validators.required]),
email: new FormControl(this.user.email, [Validators.required])
});
Предположим, что он работает нормально.Если пользователь обновляет имя в графическом интерфейсе, this.user.name
корректно обновляется.
Предположим, что я добавил некоторую логику в класс User, который заполняет электронную почту на основе введенного имени.Каждый раз, когда имя меняется, поле электронной почты автоматически генерируется как «* 10101 * имя» 10101 * «@ gmail.com» 1014
К сожалению, сгенерированное письмо не отображается в графическом интерфейсе.Как этого добиться?
Как уведомить FormGroup
об изменениях в классе User?
У меня было две идеи:
1) Добавить ([ngModel]) - и это сработало -но я чувствую, что это плохая идея смешивать Reactive Forms с ngModel
2) Добавить следующий код, после того, как форма создана:
this.form.controls["name"].valueChanges.distinctUntilChanged().subscribe(form => {
this.form.patchValue({email: this.model.email});
});
Но она не выглядит чистой.Есть ли другой вариант?