Open dkshichkovskiy opened 7 months ago
updateOn
определяет момент когда значение из поля ввода (HTMLInput
) попадает в модель (FormControl
). Возможные значения change
/blur
/submit
, которые соответствуют событиям формы (а если точнее, то вызову соответствующих функций, полученных через методы интерфейса ControlValueAccessor
- registerOnChange
, registerOnTouched и ngSubmit
соответственно)
Правила валидации всегда ассоциированы с некоторым инстансом FormControl
, именно поэтому при установке updateOn=blur
выполняется правило 1 - т.к. только на blur
проиходит изменение значения и появляется возможность запустить валидацию и сказать, корректно или нет введенное значение. (Кстати, странно, что при этом выполняется правило 2, т.к. до следующего blur
валидация выполняться не должна).
Так что зависимость на updateOn
косвенно мы все таки имеем.
Но, с другой стороны, правило, определяющее когда отображать или скрывать элемент индикатор - должно лежать на плечах библиотеки PRIZM.
В этом плане мне импонирует реализация сделанная в Material, а именно ErrorStateMatcher
(дефолтная реализация которого, кстати, совпадает с требованиями PRIZM afaik)
@PrizmDS просьба посмотреть
Изучаем
Библиотека
Выберите нужное отметив галочку [x]
@prizm-ui/core
@prizm-ui/components
@prizm-ui/install
@prizm-ui/icons
@prizm-ui/flag-icons
@prizm-ui/theme
@prizm-ui/charts
@prizm-ui/ast
@prizm-ui/nx-plugin
Компонент
Любое текстовое поле
Версия
3.11.0
Описание проблемы
Сейчас нет понимания, как именно должна работать валидация на текстовых полях.
Со слов нашего дизайнера должно быть следующее поведение: 1) Ошибка валидации появляется (если значение не валидно) при потере фокуса (событие
blur
). 2) Ошибка валидации убирается (если значение становится валидным) при вводе значение (событиеinput
). 3) При клике на иконку сброса расфокусировка текстового поля не происходит. 4) При клике на иконку сброса ошибка валидации не появляется исходя из пунктов 1 и 3.Под "ошибка валидации появляется/убирается" имеется в виду отображение/скрытие индикации ошибки (красная иконка в правой области контрола). Красная рамка отображается только если есть ошибка валидации и текстовое поле не в фокусе.
Сейчас пункты 1 и 2 выполняются, если указать у
FormControl
опциюupdateOn: 'blur'
. Но есть подозрение, что такое поведение было получено случайно и нет гарантии что при последующих обновлениях Prizm оно не будет изменено.К тому же пункты 3 и 4 сейчас не выполняются. Вероятно, сделать это будет проблематично т.к. при клике на иконку сброса наверняка будет происходить событие blur на текстовом поле, а если оно будет происходить, то согласно пункту 1 будет происходить валидация.
На поведении, описанном выше, не настаиваю. Нужно любое поведение, которое будет удовлетворять команду разработки Prizm и дизайн систему, будет стабильным (неизменным в течении времени) и где-либо зафиксированным.
Ещё вопросы:
updateOn: blur
, при дефолтном значенииchange
эти пункты, конечно, не выполняются. Насколько вообще корректно давать разработчику-пользователю такую вариативность? Не должно ли быть так, что вне зависимости отupdateOn
поведение остаётся таким, каким это зафиксировано?