Fields for selecting one or multiple values from a set of options.

select

Single or multi-select dropdown.

{
  key: 'country',
  type: 'select',
  value: '',
  label: 'Country',
  required: true,
  options: [
    { value: 'us', label: 'United States' },
    { value: 'uk', label: 'United Kingdom' },
  ],
  placeholder: 'Select country',
}

Core Properties:

  • options: Array of { value: T, label: string } objects (at field level, not in props)

Core Props:

  • placeholder: Placeholder text when no value selected

Adapter Props

Implement ValueFieldComponent<SelectField>. See Building an Adapter for the full guide.

import { Component, input } from '@angular/core';
import type { SelectField, FieldMeta } from '@ng-forge/dynamic-forms/integration';
import { valueFieldMapper } from '@ng-forge/dynamic-forms/integration';
import type { ValueFieldComponent, FieldTypeDefinition } from '@ng-forge/dynamic-forms';

@Component({ selector: 'my-select', template: '<!-- your template -->' })
export default class MySelectComponent implements ValueFieldComponent<SelectField> {
  readonly field = input.required();
  readonly key = input.required<string>();
  readonly props = input<SelectField['props']>();
  readonly meta = input<FieldMeta>();
}

export const MySelectType: FieldTypeDefinition = {
  name: 'select',
  loadComponent: () => import('./select.component'),
  mapper: valueFieldMapper,
};

Example

radio

Single selection from multiple options.

{
  key: 'plan',
  type: 'radio',
  value: '',
  label: 'Subscription Plan',
  required: true,
  options: [
    { value: 'free', label: 'Free' },
    { value: 'pro', label: 'Pro - $10/month' },
    { value: 'enterprise', label: 'Enterprise - $50/month' },
  ],
}

Core Properties:

  • options: Array of { value: string, label: string } objects (at field level, not in props)

Adapter Props

Implement ValueFieldComponent<RadioField>. See Building an Adapter for the full guide.

import { Component, input } from '@angular/core';
import type { RadioField, FieldMeta } from '@ng-forge/dynamic-forms/integration';
import { valueFieldMapper } from '@ng-forge/dynamic-forms/integration';
import type { ValueFieldComponent, FieldTypeDefinition } from '@ng-forge/dynamic-forms';

@Component({ selector: 'my-radio', template: '<!-- your template -->' })
export default class MyRadioComponent implements ValueFieldComponent<RadioField> {
  readonly field = input.required();
  readonly key = input.required<string>();
  readonly props = input<RadioField['props']>();
  readonly meta = input<FieldMeta>();
}

export const MyRadioType: FieldTypeDefinition = {
  name: 'radio',
  loadComponent: () => import('./radio.component'),
  mapper: valueFieldMapper,
};

Example

checkbox

Boolean toggle control.

{
  key: 'newsletter',
  type: 'checkbox',
  value: false,
  label: 'Subscribe to newsletter',
}

Adapter Props

Implement CheckedFieldComponent<CheckboxField>. See Building an Adapter for the full guide.

import { Component, input } from '@angular/core';
import type { CheckboxField, FieldMeta } from '@ng-forge/dynamic-forms/integration';
import { checkboxFieldMapper } from '@ng-forge/dynamic-forms/integration';
import type { CheckedFieldComponent, FieldTypeDefinition } from '@ng-forge/dynamic-forms';

@Component({ selector: 'my-checkbox', template: '<!-- your template -->' })
export default class MyCheckboxComponent implements CheckedFieldComponent<CheckboxField> {
  readonly field = input.required();
  readonly key = input.required<string>();
  readonly props = input<CheckboxField['props']>();
  readonly meta = input<FieldMeta>();
}

export const MyCheckboxType: FieldTypeDefinition = {
  name: 'checkbox',
  loadComponent: () => import('./checkbox.component'),
  mapper: checkboxFieldMapper,
};

Example

toggle

Boolean switch control. Similar to checkbox but with a switch UI.

{
  key: 'darkMode',
  type: 'toggle',
  label: 'Enable Dark Mode',
  value: false,
}

Adapter Props

Implement CheckedFieldComponent<ToggleField>. See Building an Adapter for the full guide.

import { Component, input } from '@angular/core';
import type { ToggleField, FieldMeta } from '@ng-forge/dynamic-forms/integration';
import { checkboxFieldMapper } from '@ng-forge/dynamic-forms/integration';
import type { CheckedFieldComponent, FieldTypeDefinition } from '@ng-forge/dynamic-forms';

@Component({ selector: 'my-toggle', template: '<!-- your template -->' })
export default class MyToggleComponent implements CheckedFieldComponent<ToggleField> {
  readonly field = input.required();
  readonly key = input.required<string>();
  readonly props = input<ToggleField['props']>();
  readonly meta = input<FieldMeta>();
}

export const MyToggleType: FieldTypeDefinition = {
  name: 'toggle',
  loadComponent: () => import('./toggle.component'),
  mapper: checkboxFieldMapper,
};

Example

multi-checkbox

Multiple selection from a list of checkboxes. Value is an array of selected values.

{
  key: 'interests',
  type: 'multi-checkbox',
  label: 'Interests',
  value: [],
  options: [
    { value: 'tech', label: 'Technology' },
    { value: 'sports', label: 'Sports' },
    { value: 'music', label: 'Music' },
  ],
}

Core Properties:

  • options: Array of { value: T, label: string } objects (at field level, not in props)

Adapter Props

Implement ValueFieldComponent<MultiCheckboxField>. See Building an Adapter for the full guide.

import { Component, input } from '@angular/core';
import type { MultiCheckboxField, FieldMeta } from '@ng-forge/dynamic-forms/integration';
import { valueFieldMapper } from '@ng-forge/dynamic-forms/integration';
import type { ValueFieldComponent, FieldTypeDefinition } from '@ng-forge/dynamic-forms';

@Component({ selector: 'my-multi-checkbox', template: '<!-- your template -->' })
export default class MyMultiCheckboxComponent implements ValueFieldComponent<MultiCheckboxField> {
  readonly field = input.required();
  readonly key = input.required<string>();
  readonly props = input<MultiCheckboxField['props']>();
  readonly meta = input<FieldMeta>();
}

export const MyMultiCheckboxType: FieldTypeDefinition = {
  name: 'multi-checkbox',
  loadComponent: () => import('./multi-checkbox.component'),
  mapper: valueFieldMapper,
};

Example