Перейти к основному содержимому

FormStatusMachine

Defined in: core/utils/status-machine.ts:53

FormStatusMachine - управляет состоянием поля формы

Предоставляет:

  • Единый источник истины для статуса
  • Computed signals для derived состояний (valid, invalid, pending, disabled)
  • Валидацию переходов между состояниями

Example

const statusMachine = new FormStatusMachine('valid');

// Начало валидации
statusMachine.startValidation();
console.log(statusMachine.pending.value); // true

// Завершение валидации с ошибками
statusMachine.completeValidation(true);
console.log(statusMachine.invalid.value); // true

// Отключение поля
statusMachine.disable();
console.log(statusMachine.disabled.value); // true

Constructors

Constructor

new FormStatusMachine(initial?): FormStatusMachine;

Defined in: core/utils/status-machine.ts:75

Parameters

initial?

FieldStatus = 'valid'

Начальный статус (по умолчанию 'valid')

Returns

FormStatusMachine

Methods

canValidate()

canValidate(): boolean;

Defined in: core/utils/status-machine.ts:225

Проверить, можно ли начать валидацию

Returns

boolean


completeValidation()

completeValidation(hasErrors): void;

Defined in: core/utils/status-machine.ts:121

Завершить валидацию

Parameters

hasErrors

boolean

Есть ли ошибки валидации

Returns

void

Example

// Валидация успешна
statusMachine.completeValidation(false);
// status: 'valid'

// Есть ошибки
statusMachine.completeValidation(true);
// status: 'invalid'

disable()

disable(): void;

Defined in: core/utils/status-machine.ts:159

Отключить поле

Переводит статус в 'disabled'

Returns

void

Example

statusMachine.disable();
// status: 'disabled'

dispatch()

dispatch(event): void;

Defined in: core/utils/status-machine.ts:192

Обработать событие (альтернативный API)

Parameters

event

StatusEvent

Событие для обработки

Returns

void

Example

statusMachine.dispatch({ type: 'START_VALIDATION' });
statusMachine.dispatch({ type: 'VALIDATION_FAILURE' });

enable()

enable(hasErrors?): void;

Defined in: core/utils/status-machine.ts:177

Включить поле

Parameters

hasErrors?

boolean = false

Есть ли ошибки (определяет valid/invalid)

Returns

void

Example

statusMachine.enable(false);
// status: 'valid'

statusMachine.enable(true);
// status: 'invalid'

getStatus()

getStatus(): FieldStatus;

Defined in: core/utils/status-machine.ts:218

Получить текущий статус

Returns

FieldStatus


setErrors()

setErrors(hasErrors): void;

Defined in: core/utils/status-machine.ts:142

Установить ошибки напрямую (без перехода через pending)

Используется для синхронной валидации или установки ошибок извне

Parameters

hasErrors

boolean

Есть ли ошибки

Returns

void

Example

statusMachine.setErrors(true);
// status: 'invalid'

startValidation()

startValidation(): void;

Defined in: core/utils/status-machine.ts:99

Начать валидацию

Переводит статус в 'pending' если поле не отключено

Returns

void

Example

statusMachine.startValidation();
// status: 'pending'

Properties

disabled

readonly disabled: ReadonlySignal<boolean>;

Defined in: core/utils/status-machine.ts:70

Поле отключено


invalid

readonly invalid: ReadonlySignal<boolean>;

Defined in: core/utils/status-machine.ts:64

Поле невалидно


pending

readonly pending: ReadonlySignal<boolean>;

Defined in: core/utils/status-machine.ts:67

Идет валидация


status

readonly status: ReadonlySignal<FieldStatus>;

Defined in: core/utils/status-machine.ts:58

Публичный read-only сигнал статуса


valid

readonly valid: ReadonlySignal<boolean>;

Defined in: core/utils/status-machine.ts:61

Поле валидно