Specialized controls for numeric ranges and date selection.
slider
Numeric range selection.
{
key: 'volume',
type: 'slider',
label: 'Volume',
value: 50,
minValue: 0, // optional
maxValue: 100, // optional
step: 5, // optional
}Core Properties (all optional):
minValue: Minimum slider valuemaxValue: Maximum slider valuestep: Step increment value
Adapter Props
Compose NgForgeField via hostDirectives and register the field type with valueFieldMapper. See Building an Adapter for the full guide.
// my-slider.component.ts
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import {
injectNgForgeField,
NgForgeControl,
NgForgeFieldHost,
type SliderField,
} from '@ng-forge/dynamic-forms/integration';
@Component({
selector: 'my-slider',
imports: [NgForgeControl],
hostDirectives: [NgForgeFieldHost],
template: `<!-- mark the control element with ngForgeControl so meta + aria land there -->`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export default class MySliderComponent {
protected readonly ngf = injectNgForgeField<number>();
readonly props = input<SliderField['props']>();
}
// my-slider.type.ts
import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';
import { valueFieldMapper } from '@ng-forge/dynamic-forms/integration';
export const MySliderType: FieldTypeDefinition = {
name: 'slider',
loadComponent: () => import('./my-slider.component'),
mapper: valueFieldMapper,
};datepicker
Date selection control.
{
key: 'birthDate',
type: 'datepicker',
label: 'Birth Date',
value: null,
required: true,
minDate: new Date(1900, 0, 1), // optional
maxDate: new Date(), // optional
placeholder: 'Select your birth date',
}Core Properties (all optional):
minDate: Minimum selectable date —Date | string | nullmaxDate: Maximum selectable date —Date | string | nullstartAt: Initial calendar view date —Date | null
Core Props:
placeholder: Placeholder textformat: Date format string (UI-integration specific)
Adapter Props
Compose NgForgeField via hostDirectives and register the field type with datepickerFieldMapper. See Building an Adapter for the full guide.
// my-datepicker.component.ts
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import {
injectNgForgeField,
NgForgeControl,
NgForgeFieldHost,
type DatepickerField,
} from '@ng-forge/dynamic-forms/integration';
@Component({
selector: 'my-datepicker',
imports: [NgForgeControl],
hostDirectives: [NgForgeFieldHost],
template: `<!-- mark the control element with ngForgeControl so meta + aria land there -->`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export default class MyDatepickerComponent {
protected readonly ngf = injectNgForgeField<string>();
readonly props = input<DatepickerField['props']>();
}
// my-datepicker.type.ts
import type { FieldTypeDefinition } from '@ng-forge/dynamic-forms';
import { datepickerFieldMapper } from '@ng-forge/dynamic-forms/integration';
export const MyDatepickerType: FieldTypeDefinition = {
name: 'datepicker',
loadComponent: () => import('./my-datepicker.component'),
mapper: datepickerFieldMapper,
};