Я создал собственный угловой компонент для выбора нескольких элементов из коллекции. Этот пользовательский элемент имеет массив как ngModel. Я хотел бы, чтобы он отражал состояние проверки, то есть: ng-invalid ng-invalid-required.
если я добавлю в tpl пользовательского элемента поле ввода с этим ngModel, состояние проверки будет обновлено правильно. Но если он находится в обертке этого пользовательского элемента, он не работает:
<input type="text" ng-model="$ctrl.selected" name="selected" required /><!--WORKS-->
<div
class="pseudoField"
ng-model="$ctrl.selected"
required
name="test"
><!--NOT WORKING-->
Если форма, содержащая этот настраиваемый элемент, отправляется, состояние проверки корректно отражается на входных данных. Он получает классы CSS: «ng-invalid ng-invalid-required». Но то же самое не произошло с div.
Как это сделать в div?
РЕДАКТИРОВАТЬ: Чтобы дать некоторый контекст, компонент представляет собой раскрывающийся список автозаполнения, который позволяет выбрать несколько элементов из списка, представленного в раскрывающемся списке. После выбора элемент попадает в список выбранных элементов, представленных в виде «тегов». Это похоже на пример select2 «Поддержка тегов»: https://select2.github.io/examples.html
Для этого я обернул ввод в контейнер div ".pseudoField". При щелчке контейнера div он передает фокус этому элементу ввода. У входных данных удалены стили границ, поэтому они «невидимы». Когда ввод сфокусирован, стиль div.pseudoField изменяется, чтобы он выглядел так, как будто он сфокусирован. Таким образом, для пользователя div.pseudoField действует как элемент формы, и я хотел бы, чтобы он также имел состояние проверки. Надеюсь, это имеет смысл.