Angular 2 Динамическое изменение формы генерирует выражение исключения, которое изменилось

Я пытаюсь создать сложную вложенную форму, сгенерированную динамически, но я не могу заставить ее работать.

Результат будет примерно таким: Имитация желаемого результата

Пользователь должен выбрать файл, тип файла, описание и выполнить необходимые метаданные. После этого он сможет отправить файл.

Проблема в том, что когда я динамически генерирую форму, я получаю: «Выражение изменилось после его проверки. Предыдущее значение: «истина». Текущее значение: «ложь».

Я пытаюсь принудительно обнаружить изменения в той части, где я создаю форму, например так:

this.metadataForm = this.docMetService.toFormGroup(this.metadataDefinitions);
this.changesDetector.markForCheck();

Но ошибка все еще происходит.

Любая помощь? заранее спасибо


person Adrian Abreu    schedule 12.12.2016    source источник
comment
Вы пробовали метод detectChanges вместо markForCheck?   -  person yurzui    schedule 12.12.2016


Ответы (1)


Дай угадаю. Вы получаете доступ к действительному свойству элемента управления где-то, которое изначально действительно, потому что вы, вероятно, не загрузили части формы, которые изменили бы действительность.

"Выражение лица изменилось после того, как оно было проверено" означает, что что-то произошло вне поля зрения углового.

Чтобы это исправить, попробуйте удалить эту проверку достоверности из своего шаблона, а затем проверьте, все ли в порядке.

Затем, просто для проверки, поместите основной метод, который создает все ваши блоки динамической формы, внутри setTimeout (что помогает angular повторно запустить cd) и в конце запустите cd.detectChanges.

person Milad    schedule 12.12.2016
comment
То есть после решения некоторых проблем мы решили не использовать привязку свойства к шаблону. - person Adrian Abreu; 09.01.2017