Type

CustomFunction

@ng-forge/dynamic-forms

Custom function signature for conditional expressions

Custom functions are used for conditional logic in: - when conditions (field visibility, conditional validation) - readonly logic (dynamic readonly state) - disabled logic (dynamic disabled state) - Dynamic value calculations

Unlike validators, custom functions: - Return any value (typically boolean for conditions, but could be strings, numbers, etc.) - Do NOT return ValidationError objects - Receive EvaluationContext (field values) not FieldContext (field state)

Signature

type CustomFunction<TFormValue extends Record<string, unknown> = any> = (context: EvaluationContext<unknown, TFormValue>) => unknown;

Type Parameters

NameConstraintDefaultDescription
TFormValueRecord<string, unknown>any-

Examples

// Boolean condition function
const isAdult: CustomFunction = (ctx) => {
  return ctx.age >= 18;
};

// Used in field configuration:
{
  key: 'alcoholPreference',
  type: 'select',
  when: { function: 'isAdult' }  // Only show if isAdult returns true
}
// Calculation function
const calculateDiscount: CustomFunction = (ctx) => {
  const price = ctx.price || 0;
  const isVip = ctx.isVip || false;
  return isVip ? price * 0.8 : price * 0.9;
};