У меня есть форма, которая программно создается через DynamicComponentLoader::loadIntoLocation
. Код формы ниже:
constructor (
private _builder: FormBuilder
) {
this.editForm = _builder.group({
name: ['', Validators.required],
email: ['', Validators.compose([Validators.required, Helpers.emailValidator])],
phone: [''],
phoneAlt: [''],
location: [''],
dob: [''],
bio: [''],
});
}
Вы заметите, что некоторые формы не имеют валидаторов (насколько я могу судить, это то же самое, что и использование Validators.nullValidator
, я тестировал оба варианта).
В моем шаблоне у меня есть следующий код (для каждого элемента управления):
<label for="phone">Contact Number <span *ngIf="!phone.valid">- {{e(phone)}}</span></label>
<input type="text" name="phone" id="phone" ngControl="phone" #phone="ngForm">
Первый элемент управления, у которого нет валидатора, дважды выдает следующее исключение, когда попадает в часть !phone.valid
шаблона:
EXCEPTION: Expression '!phone.valid in e@15:43' has changed after it was checked. Previous value: 'true'. Current value: 'false' in [!phone.valid in e@15:43]
Я ни в коем случае не касаюсь элементов управления или this.editForm
после первоначального создания, поэтому, что касается моего кода, ничего не должно меняться.
Я знаю, что могу подавить ошибки, вызвав enableProdMode()
, но я предпочел бы исправить проблему, а не скрывать ее.
Редактировать (8 февраля): с тех пор я пытался переместить содержимое модального окна на отдельную страницу, но ошибки сохраняются. Это предполагает, что проблема не связана с тем, как я создаю и загружаю модальные окна, а скорее с ControlGroup или FormBuilder.