Как обрабатывать уведомления о прикосновениях во вложенных пользовательских элементах управления формы в Angular - PullRequest
0 голосов
/ 05 апреля 2019

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

Простой пример:

Допустим, я создал пользовательский DateField из управления, он состоит только из <input />.

Затем я создаю пользовательский элемент Calendar из элемента управления, это компонент календаря со своей собственной внутренней сложностью с набором <div> s и <button> s в качестве шаблона.

Затем я хочу создать пользовательский элемент DatePicker из элемента управления, составляющий компоненты DateField и Calendar.

Внутри элементов управления формы мне нужно обработать опции updateOn путем правильной реализации уведомлений touched.

Для DateField это просто, пример в документе говорит об этом, просто уведомляйте о касании, когда размытие ввода.
Для Calendar это немного менее просто, но выполнимо, проверяя, размывается ли кнопка, и следующий сфокусированный элемент не находится внутри Calendar.
Таким образом, эти два элемента управления формой могут легко соответствовать опциям updateOn.

Давайте теперь посмотрим на DatePicker. Он состоит из DateField и Calendar, поэтому для правильной обработки уведомлений о касании мне нужно активировать его, когда DateField и Calendar теряют фокус. Я не могу просто слушать изменения событий, потому что даже если они всплывают, это нарушит конкретный механизм прикосновения, предоставляемый Calendar пользовательским элементом управления формы.
Когда я создаю эти два элемента управления формой, у меня есть доступ к их FormControl моделям. Свойство FormControl#touched удобно, но бесполезно в моем случае, потому что мне нужно было бы «прослушивать» изменения касания, но, похоже, они не являются такими событиями или потоками.

Я не нашел хорошего способа добиться этого с помощью простых ControlValueAccessor реализаций. Итак, я пришел к созданию специализированного вывода на моих пользовательских элементах управления формой, чтобы они могли вызывать «прикосновенные» уведомления, но это неудовлетворительно, потому что если я поделюсь своими таможенными элементами управления формой, нужно научиться использовать угловые формы, а затем изучить мой специализированный вывод и что это значит.

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

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