169 похожих чатов

Добрый день. Как я могу отметить все контроллы как нажатые?

this.form.MarkAllAsTouched() не срабатывает.

22 ответов

33 просмотра

Нажатые - это dirty?

Adam-Abdulaev Автор вопроса
Ekaterina
Нажатые - это 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(); } }

Adam-Abdulaev Автор вопроса
Andrew (ノಠ益ಠ)ノ彡┻━┻
for (const control in this.form.controls) { ...

а formArray воспринимается как controls?

Adam Abdulaev
а formArray воспринимается как controls?

нет, это массив контролов, который тоже нужно в цикле прогнать

Adam Abdulaev
а formArray воспринимается как controls?

если завернуть в ControlValueAccessor то - да. но по факту для рутовой формы этот formArray будет уже пофиг

Adam Abdulaev
да, я хочу чтобы при нажатии на кнопку отправки фо...

А не легче сделать кнопку недоступной к нажатию пока форма невалидна, а под не валидными полями сделать месседж о том, что неправильно заполнено поле. Тогда не будет 10 строк кода лишних.

Adam Abdulaev
да, я хочу чтобы при нажатии на кнопку отправки фо...

Посмотри классы цсс на контролах. И ЦССом подсвечивай

Adam-Abdulaev Автор вопроса
Andrei
Посмотри классы цсс на контролах. И ЦССом подсвечи...

они у меня подсвечиваются, если я нажимаю и выхожу с инпута ничего не введя. Задача все пустые одновременно подсветить.

Adam Abdulaev
да, я хочу чтобы при нажатии на кнопку отправки фо...

ng-untouched ng-pristine ng-invalid при клике вешаем цсс класс submited и .ng-untouched.ng-pristine.ng-invalid.submited траляля

Egor Платонов
А не легче сделать кнопку недоступной к нажатию по...

У такого подхода есть пара минусов 1) Раз нет триггера в виде submit (он задизейблен), то сообщения должны быть на экране сразу 1.1) Ок, если они какие-то серые и не делают из формы одно красное большое пятно, сообщающее пользователю, что он уже дурак и накосячил, что-то не заполнил (он мог еще даже не начать это делать) 1.2) Если валидаторов будет много, то по каждому валидатору каждого поля нужно подсказку писать прям на экране, что может быть неудобно 2) Если форма в размерах большая, некоторые поля могут не поместиться на экране. Наличие триггера submit может инициировать прокрутку к, например, первому невалидному полю, что куда удобнее, чем если б пользователь самостоятельно искал невалидные поля 2.1) Если у полей есть тултипы, то триггер может у первого невалидного раскрыть тултип, что избавит от необходимости держать сообщения на экране Я поддерживаю подход с задизейбленным submit только в том случае, если форма совсем маленькая, например, логин-пароль, когда поля вот прям здесь и накосячить можно либо в первом, либо во втором Если форма больше 5-6 полей, то имхо лучше не дизейблить и сделать нормальную конструкцию с анализом и корректной валидацией полей по нажатию на submit. Пользователи вам спасибо скажут

Alex Bu
У такого подхода есть пара минусов 1) Раз нет три...

Нет. Сообщения выводить под полем только после того как оно неактивным будет.

Egor Платонов
Нет. Сообщения выводить под полем только после тог...

Я зашел на форму, там 20 полей и кнопка задизейблена, мои действия? Тыкать в каждое, чтобы читать у них сообщения?

Alex Bu
Я зашел на форму, там 20 полей и кнопка задизейбле...

Для начала форму заполнить. По мере заполнения если будут ошибки тебе сразу дадут месседж. А не когда ты уже все нафиг заполнил и надо заново неправильные поля заполнять.

Egor Платонов
Для начала форму заполнить. По мере заполнения есл...

Я зашел на форму, там 200 полей, одно обязательное для заполнения, остальные - нет и я даже не понимаю их лейблы и суть. Кнопка задизейблена. Мои действия? Жмякаю таб, пока не высветится обязательное?

Egor Платонов
Это крайность 😁таких форм не бывает

Да ну, уф. Тут не про саму форму вопрос, а про механику и удобство

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта