Блокирование полей
Блокировка полей упрощает работу с формами, делая процесс разработки максимально динамическим. Для блокирования полей был создан простой механизм доступности, которые позволяет блокировать и разблокировать дочерние элементы. Мы рекомендуем использовать его, вместо передачи параметра disabled в FormField.
Методы
Имеется два метода disable и enable для блокировки и разблокировки полей соответственно. Данный методы вызываются у экземпляра Form:
const form = new Form();
form.disable(); // Блокировка всей формы
form.enable('name'); // Разблокировка только поля nameconst form = new Form();
form.disable(); // Блокировка всей формы
form.enable('name'); // Разблокировка только поля nameПараметры
В случае, если ни одного параметра не передано - форма, а также все дочерние элементы, будут заблокирована / разблокировано целиком.
name Необязательный
Строка или массив строк - поля для которых нужно произвести механизм доступности.
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, если форма разблокирована
form.eneable()
form.eneabled // true
form.disabled // false
form.disable();
form.eneabled // false
form.disabled // trueform.eneable()
form.eneabled // true
form.disabled // false
form.disable();
form.eneabled // false
form.disabled // trueWARNING
Форма является заблокированной (disabled: false), только тогда, когда был вызван метод disable.
Проверка дочерних элементов
Для проверки на состояние дочернего элемента воспользуйтесь методом checkFieldDisable, который возвращается логическое значение - является ли поле заблокированным.
Параметры
name Обязательное
Строковое название поля, для которого необходимо провести проверку.
const form = new Form();
forn.disable();
form.checkFieldDisable('address') ; // true
form.enable('user');
form.checkFieldDisable('user.login'); // falseconst form = new Form();
forn.disable();
form.checkFieldDisable('address') ; // true
form.enable('user');
form.checkFieldDisable('user.login'); // falseСобытия
Чтобы подписаться на изменение состояния поля ,необходимо воспользоваться методом onavailable, который имеет две перегрузки:
Для отлавливания изменение состояния формы целиком.
onavailable(callback: (disabled: boolean) => any): FunctionRemoveOnCallbackonavailable(callback: (disabled: boolean) => any): FunctionRemoveOnCallbackДля отлавливания изменения конкретного поля.
onavailable(fieldName: string, callback: (disabled: boolean) => any): FunctionRemoveOnCallbackonavailable(fieldName: string, callback: (disabled: boolean) => any): FunctionRemoveOnCallbackonavailable возвращает функцию, которую нужно вызвать, чтобы отписаться от запрошенного события.