Ясность зависит от проверки формы Angular (работает с реактивным и управляемым шаблоном), чтобы определить, когда элемент управления недействителен.Это делается путем проверки NgControl и проверки наличия ошибки.Похоже, у вас есть два вопроса.
- Как заставить ошибки проверки при отправке / проверке?
- Как создать пользовательское правило проверки?
По первому вопросу, Clarity проверяет элементы управления только после их касания, чтобы избежать преждевременного отображения ошибок.Если вы хотите форсировать проверку, вы должны использовать API ClrForm.markAsDirty()
(до 2.0) или ClrForm.markAsTouched()
(2.0+).По сути, это приведет к немедленной проверке всех элементов управления формы и отображению любых ошибок.
В шаблонно-управляемых формах вам необходимо получить ссылку на форму в вашем контроллере.
@ViewChild(ClrForm) form: ClrForm;
Затем выможете вызвать метод в вашем обработчике кнопки проверки.Не отправляйте форму.
validate() {
this.form.markAsDirty(); // 1.0
//this.form.markAsTouched(); // 2.0+
}
По второму вопросу Документация по проверке угловых форм хорошо ее освещает, и я также предлагаю взглянуть на этот пример из моей книги директива валидатора телефонного номера для NgModel, которая зависит от функции валидатора .
Если бы у вас это было в вашем проекте, вы просто добавили бы атрибут phone
в свой вводдобавить валидатор, и Angular (и Clarity) будут знать об этом.Затем вы можете написать собственное сообщение об ошибке, например так:
<clr-control-error *clrIfError="'phone'">Not a valid phone number</clr-control-error>
Если вам нужно общее сообщение об ошибке, не указывайте директиву clrIfError
, и она покажет любую ошибку .
Наконец, ваша кнопка отправки может быть просто <button type="submit" class="btn btn-primary">Submit</button>
вместо того, чтобы захватить ссылку на форму и вручную вызвать событие отправки.