Package Exports
- @covalent/dynamic-forms
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@covalent/dynamic-forms) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
td-dynamic-forms
API Summary
Properties:
| Name | Type | Description |
| --- | --- | 650--- |
| elements?
| ITdDynamicElementConfig[]
| JS Object that will render the elements depending on its config. [name] property is required.
| form
| get(): FormGroup
| Getter property for dynamic [FormGroup].
| valid
| get(): boolean
| Getter property for [valid] of dynamic [FormGroup].
| value
| get(): any
| Getter property for [value] of dynamic [FormGroup].
| errors
| get(): {[name: string]: any}
| Getter property for [errors] of dynamic [FormGroup].
| controls
| get(): {[key: string]: AbstractControl}
| Getter property for [controls] of dynamic [FormGroup].
| refresh
| function
| Refreshes the form and rerenders all validator/element modifications.
Setup
Import the [CovalentDynamicFormsModule] in your NgModule:
import { CovalentDynamicFormsModule } from '@covalent/dynamic-forms';
@NgModule({
imports: [
CovalentDynamicFormsModule,
...
],
...
})
export class MyModule {}
Usage
td-dynamic-forms
element generates a form dynamically
Pass an array of javascript objects that implement [ITdDynamicElementConfig] with the information to be rendered to the [elements] attribute.
export interface ITdDynamicElementConfig {
label?: string;
name: string;
type: TdDynamicType | TdDynamicElement;
required?: boolean;
min?: any;
max?: any;
minLength?: string;
maxLength?: string;
selections?: any[];
default?: any;
validators?: ITdDynamicElementValidator[];
}
Example for HTML usage:
<td-dynamic-forms [elements]="elements">
<ng-template let-element ngFor [ngForOf]="elements">
<ng-template let-control="control" [tdDynamicFormsError]="element.name">
<span *ngIf="control.touched || !control.pristine">
<span *ngIf="control.hasError('required')">Required</span>
<span *ngIf="control.hasError('min')">Min value: {{element.min}}</span>
<span *ngIf="control.hasError('max')">Max value: {{element.max}}</span>
<span *ngIf="control.hasError('minlength')">Min length value: {{element.minLength}}</span>
<span *ngIf="control.hasError('maxlength')">Max length value: {{element.minLength}}</span>
</span>
</ng-template>
</ng-template>
</td-dynamic-forms>
import { ITdDynamicElementConfig, TdDynamicElement, TdDynamicType } from '@covalent/dynamic-forms';
...
})
export class Demo {
elements: ITdDynamicElementConfig[] = [{
name: 'input',
type: TdDynamicElement.Input,
required: true,
}, {
name: 'textLength',
label: 'Text Length',
type: TdDynamicElement.Input,
minLength: 4,
maxLength: 12,
}, {
name: 'number',
type: TdDynamicType.Number,
min: 10,
max: 80,
}, {
name: 'slider',
label: 'Label',
type: TdDynamicElement.Slider,
required: true,
}, {
name: 'boolean',
type: TdDynamicType.Boolean,
default: false,
}, {
name: 'select',
type: TdDynamicElement.Select,
required: true,
selections: ['A','B','C']
default: 'A',
}, {
name: 'file-input',
label: 'Label',
type: TdDynamicElement.FileInput,
}];
}