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[], groups: GroupBase[]){ let form: any = {}; groups.forEach(group => { let subgroup: any = {}; group.groupFields.forEach(field => { if(field.attributes.validation != undefined) field.attributes.validation.forEach(val => { if (val.ruleStyle.toString()=="existence"){ field.required = true; } }); 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); } }