cd-force
Version:
Form creation goodness.
27 lines (21 loc) • 795 B
text/typescript
import { ControlBase } from './models/control-base';
import { Injectable } from '@angular/core';
import { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';
()
export class FormCreatorService {
constructor(private formBuilder: FormBuilder) { }
toFormGroup(controls: ControlBase<any>[]) {
const group: any = {};
controls.forEach(control => {
group[control.key] = control.required ? new FormControl(control.value || '', Validators.required)
: new FormControl(control.value || '');
});
return new FormGroup(group);
}
toFormGroupItems(items: Array<any>) {
const arr = items.map(item => {
return this.formBuilder.control(item.value);
});
return this.formBuilder.array(arr);
}
}