61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
|
|
@Injectable()
|
|
export class FieldControlService {
|
|
constructor(){ }
|
|
|
|
|
|
toFormGroup(fields: any, groups:any){
|
|
|
|
let form: any = {};
|
|
|
|
groups.forEach(group => {
|
|
let subgroup: any = {};
|
|
let subgroupFieldset: any = {};
|
|
let fieldset: boolean = false;
|
|
group.groupFields.forEach(field => {
|
|
//if(field.attributes.validation != undefined)
|
|
// field.attributes.validation.forEach(val => {
|
|
// if (val.ruleStyle.toString()=="existence"){
|
|
// field.required = true;
|
|
// }
|
|
// if (val.ruleStyle.toString()=="regex"){
|
|
// field.regex = val.regex;
|
|
// }
|
|
// });
|
|
subgroup[field.key] = field.required ? new FormControl(field.value || '', Validators.required) : new FormControl(field.value || '')
|
|
|
|
if (group.compositeFields!=undefined){
|
|
fieldset = true;
|
|
group.compositeFields.groupFields.forEach(field => {
|
|
//subgroupFieldset[field.key] = field.required ? new FormControl(field.value || '', Validators.required) : new FormControl(field.value || '')
|
|
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
|
|
if (fieldset){
|
|
//subgroup["FieldSet"+ group.key] = form[group.key] = new FormGroup(subgroupFieldset);
|
|
form[group.key] = new FormGroup(subgroup);
|
|
}
|
|
|
|
else
|
|
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);
|
|
}
|
|
|
|
|
|
} |