Я думаю, что у меня есть очень распространенный вопрос об обработке форм в угловом формате, но я не нашел ответа на свой вопрос после поиска и чтения в течение нескольких часов.
Проблема:
Я построил реактивную форму, и если пользователь находится в угловом контексте (ввод значений и т. Д.), Все в порядке.Но когда я использую плагин Chrome, такой как Заполнитель форм веб-разработчика и заполняю им форму, модель не обновляется.
Чтобы воспроизвести проблему, я создал крошечное приложениездесь: https://stackblitz.com/edit/angular-ltrmpd.
Контроллер формы:
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
form = new FormGroup({
name: new FormControl('Valid name', [
Validators.required,
Validators.minLength(5)
])
});
get name() { return this.form.get('name'); }
onSubmit() {
// reload all form data and revalidate, but how?
if (this.form.valid) {
alert('VALID');
}
}
}
Вид формы:
<code><form [formGroup]="form" (ngSubmit)="onSubmit()">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input formControlName="name" type="text"class="form-control" id="name" [class.is-invalid]="name.invalid && name.touched" />
<pre class="invalid-feedback">{{ name.errors | json }}
{{ form.value | json }}
form.valid: {{ form.valid }}
УСТАНОВИТЬ ЗНАЧЕНИЕ СНАРУЖИ модель не обновляетсяSET VALUE ANGULAR WAY Правильно обновляет модельОтправить
- Значение формы по умолчанию действительно
- Нажмите кнопку «УСТАНОВИТЬ ЗНАЧЕНИЕ СНАРУЖИ» -> модель не обновляется
- Нажмите «Отправить» -> Вы не сможете нажать кнопку, или мы вручную обновим модель и состояние проверки после нажатия кнопки
Самое простое решение, которое я пробовал, - обновить модельи выполнить повторную проверку после того, как пользователь отправит форму.Но как я могу обновить модель с текущими значениями формы?
Я только нашел этот вопрос: Как обновить поле формы Angular 2 Reactive, когда изменения произошли за пределами мира Angular .Но я думаю, что это не та же проблема, потому что я не имею никакого контроля над инструментами заполнения форм.