Нажатые - это dirty?
да, я хочу чтобы при нажатии на кнопку отправки формы если она не валидна подсвечивались пустые поля которые обязательно заполнять.
for (const control in this.form.controls) { if (Object.prototype.hasOwnProperty.call(this.form.controls, control)) { this.form.controls[control].markAsDirty(); this.form.controls[control].updateValueAndValidity(); } }
а formArray воспринимается как controls?
нет, это массив контролов, который тоже нужно в цикле прогнать
если завернуть в ControlValueAccessor то - да. но по факту для рутовой формы этот formArray будет уже пофиг
А не легче сделать кнопку недоступной к нажатию пока форма невалидна, а под не валидными полями сделать месседж о том, что неправильно заполнено поле. Тогда не будет 10 строк кода лишних.
это не от меня зависит
Посмотри классы цсс на контролах. И ЦССом подсвечивай
Не информативно будет
они у меня подсвечиваются, если я нажимаю и выхожу с инпута ничего не введя. Задача все пустые одновременно подсветить.
ng-untouched ng-pristine ng-invalid при клике вешаем цсс класс submited и .ng-untouched.ng-pristine.ng-invalid.submited траляля
У такого подхода есть пара минусов 1) Раз нет триггера в виде submit (он задизейблен), то сообщения должны быть на экране сразу 1.1) Ок, если они какие-то серые и не делают из формы одно красное большое пятно, сообщающее пользователю, что он уже дурак и накосячил, что-то не заполнил (он мог еще даже не начать это делать) 1.2) Если валидаторов будет много, то по каждому валидатору каждого поля нужно подсказку писать прям на экране, что может быть неудобно 2) Если форма в размерах большая, некоторые поля могут не поместиться на экране. Наличие триггера submit может инициировать прокрутку к, например, первому невалидному полю, что куда удобнее, чем если б пользователь самостоятельно искал невалидные поля 2.1) Если у полей есть тултипы, то триггер может у первого невалидного раскрыть тултип, что избавит от необходимости держать сообщения на экране Я поддерживаю подход с задизейбленным submit только в том случае, если форма совсем маленькая, например, логин-пароль, когда поля вот прям здесь и накосячить можно либо в первом, либо во втором Если форма больше 5-6 полей, то имхо лучше не дизейблить и сделать нормальную конструкцию с анализом и корректной валидацией полей по нажатию на submit. Пользователи вам спасибо скажут
Нет. Сообщения выводить под полем только после того как оно неактивным будет.
Тогда никаких красных пятен не будет
Я зашел на форму, там 20 полей и кнопка задизейблена, мои действия? Тыкать в каждое, чтобы читать у них сообщения?
Для начала форму заполнить. По мере заполнения если будут ошибки тебе сразу дадут месседж. А не когда ты уже все нафиг заполнил и надо заново неправильные поля заполнять.
Я зашел на форму, там 200 полей, одно обязательное для заполнения, остальные - нет и я даже не понимаю их лейблы и суть. Кнопка задизейблена. Мои действия? Жмякаю таб, пока не высветится обязательное?
Это крайность 😁таких форм не бывает
Да ну, уф. Тут не про саму форму вопрос, а про механику и удобство
Обсуждают сегодня