Skip to main content

transformValue()

function transformValue<TForm, TValue>(
field,
transformer,
options?): void;

Defined in: core/behavior/behaviors/transform-value.ts:80

Трансформация значения поля при изменении Позволяет автоматически форматировать или преобразовывать значения

Type Parameters

TForm

TForm extends FormFields

TValue

TValue extends FormValue = FormValue

Parameters

field

FieldPathNode<TForm, TValue>

Поле для трансформации

transformer

(value) => TValue

Функция трансформации (ОБЯЗАТЕЛЬНО идемпотентная: f(f(x)) === f(x))

options?

TransformValueOptions & object

Опции (onUserChangeOnly, emitEvent, debounce)

Returns

void

Examples

import { transformValue, type BehaviorSchemaFn } from '@reformer/core/behaviors';

interface RegistrationForm {
promoCode: string;
email: string;
}

export const registrationBehavior: BehaviorSchemaFn<RegistrationForm> = (path) => {
// Идемпотентно: toUpperCase(toUpperCase(x)) === toUpperCase(x) ✓
transformValue(path.promoCode, (value) => (value ?? '').toUpperCase());
transformValue(path.email, (value) => (value ?? '').trim().toLowerCase());
};
import { transformValue, type BehaviorSchemaFn } from '@reformer/core/behaviors';

interface ProfileForm {
inn: string; // ИНН — только цифры
prefixedCode: string; // должен иметь префикс "ID-"
}

export const profileBehavior: BehaviorSchemaFn<ProfileForm> = (path) => {
// Цифры из ИНН: трансформер идемпотентный естественно
transformValue(path.inn, (v) => (v ?? '').replace(/\D/g, ''));

// Префикс — ВАЖНО guard «уже преобразовано», иначе бесконечный цикл
// f("ID-123") должно === "ID-123", а не "ID-ID-123"
transformValue(
path.prefixedCode,
(v) => (v?.startsWith('ID-') ? v : `ID-${v ?? ''}`),
{
onUserChangeOnly: true, // не трогаем значение из patchValue/preload
debounce: 200,
},
);
};

See

docs/llms/26-transform-value.md