Skip to content

Блокирование полей

Блокировка полей упрощает работу с формами, делая процесс разработки максимально динамическим. Для блокирования полей был создан простой механизм доступности, которые позволяет блокировать и разблокировать дочерние элементы. Мы рекомендуем использовать его, вместо передачи параметра disabled в FormField.

Методы

Имеется два метода disable и enable для блокировки и разблокировки полей соответственно. Данный методы вызываются у экземпляра Form:

ts
const form = new Form();
form.disable(); // Блокировка всей формы
form.enable('name'); // Разблокировка только поля name
const form = new Form();
form.disable(); // Блокировка всей формы
form.enable('name'); // Разблокировка только поля name

Параметры

В случае, если ни одного параметра не передано - форма, а также все дочерние элементы, будут заблокирована / разблокировано целиком.

name Необязательный

Строка или массив строк - поля для которых нужно произвести механизм доступности.

ts
form.enable(); // [1]
form.disable('address'); // [2]
form.enable(['address.city', 'address.country']); // [3]
form.enable(); // [1]
form.disable('address'); // [2]
form.enable(['address.city', 'address.country']); // [3]
  • [1] - полная разблокировка формы. По умолчанию форма находится в состоянии disabled: false.
  • [2] - блокировка поля address. Все дочерние элементы (address.city, address.details.code) будут также заблокированы.
  • [3] - Разблокировка переданных полей. Заметьте, что поле address продолжит находиться в состоянии блокировки.

Состояние

Чтобы понять, что форма заблокирована или разблокирована можно воспользоваться одним из свойств:

  • disabled - имеет значение true, если форма заблокирована
  • enabled - имеет значение true, если форма разблокирована
ts
form.eneable()
form.eneabled // true
form.disabled // false

form.disable();
form.eneabled // false
form.disabled // true
form.eneable()
form.eneabled // true
form.disabled // false

form.disable();
form.eneabled // false
form.disabled // true

WARNING

Форма является заблокированной (disabled: false), только тогда, когда был вызван метод disable.

Проверка дочерних элементов

Для проверки на состояние дочернего элемента воспользуйтесь методом checkFieldDisable, который возвращается логическое значение - является ли поле заблокированным.

Параметры

name Обязательное

Строковое название поля, для которого необходимо провести проверку.

ts
const form = new Form();

forn.disable();
form.checkFieldDisable('address') ; // true

form.enable('user');
form.checkFieldDisable('user.login'); // false
const form = new Form();

forn.disable();
form.checkFieldDisable('address') ; // true

form.enable('user');
form.checkFieldDisable('user.login'); // false

События

Чтобы подписаться на изменение состояния поля ,необходимо воспользоваться методом onavailable, который имеет две перегрузки:

Для отлавливания изменение состояния формы целиком.

ts
onavailable(callback: (disabled: boolean) => any): FunctionRemoveOnCallback
onavailable(callback: (disabled: boolean) => any): FunctionRemoveOnCallback

Для отлавливания изменения конкретного поля.

ts
onavailable(fieldName: string, callback: (disabled: boolean) => any): FunctionRemoveOnCallback
onavailable(fieldName: string, callback: (disabled: boolean) => any): FunctionRemoveOnCallback

onavailable возвращает функцию, которую нужно вызвать, чтобы отписаться от запрошенного события.

Released under the MIT License.