Ошибка компонента динамической формы markAsDirty (): ExpressionChangedAfterItHasBeenCheckedError

У меня есть приложение с компонентом динамических форм, что-то вроде этого stackblitz:

https://stackblitz.com/edit/angular-g3a7cm?file=src%2Fapp%2Fform.component.ts&devtoolsheight=50

Form.component загружает схему и некоторые данные с сервера. Если данные были загружены для определенного поля, он помечает их как грязные, вызывая markAsDirty (). Это так, если загружаются грязные автоматически сохраненные данные, правильные сообщения проверки могут отображаться немедленно.

Существует также form-field.component, у которого есть функция, которая оценивает отключенное состояние и отключает / включает поле.

Я получаю сообщение об ошибке при первом отключении какого-либо поля в форме.

Если я закомментирую любую из этих строк, ошибка исчезнет:

form.component.ts: 50 form-field.component.ts: 42

Кто-нибудь знает, почему это происходит и как я могу это исправить?

Я просмотрел другие похожие вопросы, но, похоже, ни один из них не совпадает с моей конкретной проблемой.

Спасибо, что посмотрели.

редактировать:

Кроме того, если я помещаю первоначальный вызов evalDisabled () в setTimeout, он исправляет его. (form-field.component.ts: 32) Я думал, что суть реактивных форм в том, что они должны допускать синхронную логику. Почему я должен это делать?

Вы все еще сталкиваетесь с этой проблемой или ожидаете хорошего решения?

Ajay Ojha 25.10.2018 17:07

Спасибо, что заглянули, но я уже решил эту проблему. Оказывается, это ошибка, связанная с ngFor. Если вам интересно, вы можете найти подробности здесь: github.com/angular/angular/issues/24563

mfa 26.10.2018 01:21

Спасибо, что поделились этой ссылкой

Ajay Ojha 26.10.2018 01:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
158
0

Другие вопросы по теме