47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
|
import { Injectable } from '@angular/core';
|
||
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
||
|
|
||
|
import { FieldBase } from '../../app/form/fields/field-base';
|
||
|
import { GroupBase } from '../form/dynamic-form-group/group-base';
|
||
|
|
||
|
@Injectable()
|
||
|
export class FieldControlService {
|
||
|
constructor(){ }
|
||
|
|
||
|
toFormGroup(fields: FieldBase<any>[]){
|
||
|
let group: any ={};
|
||
|
fields.forEach(field => {
|
||
|
group[field.key] = field.required ? new FormControl(field.value || '', Validators.required)
|
||
|
: new FormControl(field.value || '')
|
||
|
});
|
||
|
|
||
|
return new FormGroup(group);
|
||
|
}
|
||
|
|
||
|
|
||
|
toFormGroupAlt(fields: FieldBase<any>[], groups: GroupBase<any>[]){
|
||
|
|
||
|
let form: any = {};
|
||
|
|
||
|
groups.forEach(group => {
|
||
|
let subgroup: any = {};
|
||
|
group.groupFields.forEach(field => {
|
||
|
subgroup[field.key] = field.required ? new FormControl(field.value || '', Validators.required) : new FormControl(field.value || '')
|
||
|
});
|
||
|
//PLEASE CHANGE THE group.key TO BE SAME AS THE ONE ON THE DYNAMIC-FORM-GROUP-COMPONENT.html
|
||
|
form[group.key] = new FormGroup(subgroup);
|
||
|
console.log("FORM_GROUP_GROUP: ");
|
||
|
console.log(form);
|
||
|
});
|
||
|
//add also the spare fields into the form
|
||
|
fields.forEach(field => {
|
||
|
form[field.key] = field.required ? new FormControl(field.value || '', Validators.required) : new FormControl(field.value || '')
|
||
|
});
|
||
|
|
||
|
console.log("FORM_GROUP: ");
|
||
|
console.log(form);
|
||
|
return new FormGroup(form);
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|