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,
},
);
};