У меня есть форма, которая создается программно через DynamicComponentLoader::loadIntoLocation
. Код формы ниже:FormBuilder Control, вызывающий «Выражение изменилось после его проверки» exception
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 [email protected]:43' has changed after it was checked. Previous value: 'true'. Current value: 'false' in [!phone.valid in [email protected]:43]
ни в одной точке я задевая управления или this.editForm
после первоначального создания, так, насколько мой код, то, ничего не должно измениться.
Я знаю, что могу подавить ошибки, позвонив enableProdMode()
, но я скорее исправлю проблему, чем спрячу ее.
Редактировать (8 февраля): С тех пор я попытался переместить содержимое модального файла на отдельную страницу, но ошибки сохраняются. Это предполагает, что проблема не связана с тем, как я создаю и загружаю модалы, а скорее ControlGroup или FormBuilder.
Plunker of the issue | Plunker without modal
Похоже https://github.com/угловые/угловые/вопросы/6041 –