# NgDynaform A Dynamic Form Builder for Angular. ## Field options ### Common field metadata All fields support the following metadata. The missing properties will be 'filled oin' by dynaform's field-specific models, allowing forms to specifiued tersely. | Property | Description | Default / Notes | |-------------------- |------------------------------------------------------------------------------- |------------------------------------------------------ | | name | The FormControl name - DERIVED AUTOMATICALLY | Derived from the key of the control's metadata object | | type | The control's type | Text | | label | The controls's label | UnCamelCased and spaced version of name | | value | The control's initial value | Empty string | | checkedValue | Value when checked* | Checkboxes / Checkbuttons only | | default | Default value | | | placeholder | Optional placeholder text | | | class | CSS classes to apply | Single class (string) or array of classes (string[]) | | id | CSS id to apply | | | disabled | Whether field is disbled | | | change | Name of function in host component to call when value changes | | | source | Location of data in model | Same name and path. Used by model-mapper. | | before | Ordering instruction - move before | | | after | Ordering instruction - move after | | | validators | Array of validator functions - following Angular FormControl API | | | asyncValidators | Array of async validator functions - following Angular FormControl API | | | valFailureMessages | Validation failure messages - display appropriate message if validation fails | | ### Options metadata (selects, radios, checkbutton groups, etc) Oprions can be specified as an array of values, an array of [value, label] pairs, or an array of objects with the structure { value: 'VAL', label: 'My label' }. If you supply a aimple array of values, each value is used as both the value and label. #### Available types * Text * Textarea * Select * Radio * Checkbox * Checkbutton * Password * Hidden #### Example ``` { firstName: {}, lastName: {}, telephoneNumber: {}, country: { type: 'select', options: ['France', 'Germany', 'Italy', 'Norway', 'Spain', 'UK'] } } ``` ## Grouping related controls using containers Related cpontrols can be grouped in containers. ### Seeding groups with shared options ### Repeating groups ## The built-in model mapper TO ADD.