Это своего рода продолжение моего предыдущего поста о вложенных формах в Angular2 (бета 3 с TS) (Angular2 beta: вложение родительских / дочерних компонентов на основе форм и проверка на основе родительских), но я публикую новый вопрос, поскольку он относится к другому типу вопроса.
Вы можете найти копию проблемы, описанной здесь, на странице http://plnkr.co/edit/iCmmy9at2wF5qY0P6VmV. Короче говоря, в этом фальшивом сценарии у меня есть компонент, представляющий одно слово из воображаемого словаря, и другой дочерний компонент, используемый для представления каждого смысла этого слова; таким образом, между родительским компонентом и его дочерними компонентами существует отношение «один ко многим». Оба имеют шаблон на основе формы, созданный с помощью конструктора форм. Дочерний шаблон находится внутри NgFor
, где я привязываю каждое значение из родительской (= слово) модели. Таким образом, все свойства смысла каждого слова автоматически привязываются к модели слова.
К некоторым из этих свойств прикреплено несколько валидаторов (настраиваемых или стандартных). Моя проблема заключается в том, что когда я программно устанавливаю модель слова из родительского компонента (что также подразумевает установку значения элементов управления формы), это, кажется, вызывает некоторое состояние гонки в процессе проверки, которое вызывает несколько исключений типа ИСКЛЮЧЕНИЕ : Выражение '! DefinitionCtl.valid' было изменено после проверки. Предыдущее значение: «истина». Текущее значение: false, что блокирует дальнейшее выполнение кода.
AFAIK, единственная информация, которая, кажется, связана с этой проблемой, находится здесь:
- https://github.com/angular/angular/issues/5992,
- Angular2: Nested * ngFor, что приводит к ' Выражение изменилось после проверки "
Тем не менее, решение моей проблемы, похоже, не под рукой из этих обсуждений, если (если я хорошо понимаю) я не выберу ручное управление всеми моими привязками, чего я бы хотел избежать, поскольку в реальном приложении будет быть их много. Может ли кто-нибудь помочь?