Form field

<kbq-form-field> - это компонент, который используется для создания форм и полей ввода с поддержкой стилизации и дополнительных функций.

Следующие компоненты предназначены для использования внутри <kbq-form-field>:

Для создания горизонтальной формы необходимо добавить horizontal атрибут к <kbq-form-field> компоненту.

<kbq-hint> — это компонент, который используется для добавления подсказок к полям формы внутри <kbq-form-field> компонента. Подсказки могут быть полезны для предоставления дополнительной информации о том, как заполнить поле, какие данные ожидаются или для отображения дополнительных инструкций.

<kbq-error> — это компонент, который используется для отображения сообщений об ошибках валидации поля формы внутри <kbq-form-field> компонента. Ошибки изначально скрыты и будут отображаться только для невалидных полей формы после пользовательского взаимодействия или в момент отправки формы.

Обратите внимание

Для корректной работы компонента необходимо отключить устаревшую директиву KbqValidateDirective.

import { kbqDisableLegacyValidationDirectiveProvider } from '@koobiq/components/core';

@NgModule({
    providers: [kbqDisableLegacyValidationDirectiveProvider()]
})

По умолчанию подсветка и сообщения об ошибках отображаются для невалидных полей после взаимодействия пользователя (коснулся или отправил форму) с элементом формы. Это поведение можно переопределить при помощи ErrorStateMatcher, который предоставляет возможность гибко настраивать логику подсветки и отображения ошибок валидации, что позволяет адаптировать поведение полей ввода под конкретные требования приложения.

Можно использовать один из встроенных ErrorStateMatcher, либо написать свою собственную реализацию:

/**
 * Подсветит и отобразит ошибку для невалидного поля после отправки формы
 * Копия ShowOnFormSubmitErrorStateMatcher: https://github.com/koobiq/angular-components/blob/main/packages/components/core/error/error-state-matcher.ts
 */
class CustomErrorStateMatcher implements ErrorStateMatcher {
    isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {
        return !!(control?.invalid && form?.submitted);
    }
}

Переопределение

Для определенного поля, при помощи errorStateMatcher атрибута:

Для всех полей, при помощи ErrorStateMatcher токена:

Подробное описание обоих подходов и паттернов для конкретных компонентов (список тегов, загрузка файлов) — в руководстве Валидация.

<kbq-cleaner /> - это компонент, который добавляет кнопку очистки для заполненного поля формы внутри <kbq-form-field> компонента.

kbqPrefix и kbqSuffix - это директивы, которые позволяют добавлять пользовательские элементы до и после поля формы внутри <kbq-form-field> компонента. Эти директивы полезны для добавления иконок, текста, кнопок и других элементов, которые должны быть расположены рядом с полем формы.

В полях ввода текста при фокусе всегда отображается синяя рамка, независимо от способа активации (мышь, клавиатура или касание). Для элементов формы с выпадающим списком (таких как: select, timezone и tree select) рамка фокуса показывается только при навигации с клавиатуры (при помощи клавиши Tab) и скрывается при открытии выпадающего списка.

Для определенного поля, при помощи noBorders атрибута:

Для всех полей, при помощи KBQ_FORM_FIELD_DEFAULT_OPTIONS токена:

import { kbqFormFieldDefaultOptionsProvider } from '@koobiq/components/form-field';

@NgModule({
    providers: [kbqFormFieldDefaultOptionsProvider({ noBorders: true })]
})

<kbq-password-toggle> - это компонент, который добавляет кнопку "Показать пароль" для заполненного поля <input kbqInputPassword /> внутри <kbq-form-field> компонента.

<kbq-password-hint> - это компонент, который используется для добавления подсказок к полю <input kbqInputPassword /> внутри <kbq-form-field> компонента.

В примере используется PasswordValidators - это набор статических методов для валидации пароля.

Эта ошибка возникает, когда <kbq-form-field> не содержит поле формы, например: <input kbqInput /> или его импорт KbqInputModule.

Эта ошибка возникает, когда <kbq-password-toggle> не может найти поле <input kbqInputPassword /> или его импорт KbqInputModule.

Эта ошибка возникает, когда <kbq-stepper> не может найти поле <input kbqNumberInput /> или его импорт KbqInputModule.

Вопросы и предложения по документации
Если у вас есть вопросы или вы хотите внести свой вклад в написание документации, пожалуйста, создайте issue в нашем репозитории на GitHub.