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); } }