Angular обновляет действительность существующих элементов FormArray при добавлении нового элемента - PullRequest
0 голосов
/ 03 июля 2018

И я не хочу этого. Поскольку я проверяю каждый элемент FormArray асинхронно, я хочу, чтобы валидаторы запускались только тогда, когда это необходимо (т.е. когда значение элемента управления, к которому они добавляются, действительно изменяется). Я также нахожу это поведение странным, потому что валидаторы не выполняются при изменении значения FormArray, только при добавлении нового элемента.

репликация: https://stackblitz.com/edit/angular-reactive-forms-tkdu1n?file=app%2Fapp.component.ts

Любая помощь будет принята с благодарностью

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Похоже, что FormArray выполняет валидатор для каждого вложенного FormControl, когда в него помещается новый FormControl, и с этим ничего не поделать ...

Итак, я раздвоил ваш стек, и создал валидатор с состоянием с замыканием, и он добился цели.

Разветвленный стекблиц

Надеюсь, это поможет!

0 голосов
/ 03 июля 2018

Да, просто измените

return Observable.of(null).delay(1000);

до

return Observable.of(null).delay(0);

Когда вы делаете задержку 1000 мс, вы также отключаете и блокируете доступность статусов других экземпляров (или значений), однако, когда вы делаете задержку 0, она не обрабатывает другие экземпляры, просто проверяет текущий.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...