import { Injectable, Injector, InjectFlags } from '@angular/core'; import { FormGroup, FormControl, Validators } from '@angular/forms'; import { IDynamicBaseControl, IDyanmicHelpControl, DYNAMIC_CONTROL_TYPE } from '../interfaces/dynamic-control.interface'; import { DynamiControlGroupHttpInterface, DynamiControlGroupHttpToken } from '../interfaces/dynamic-control-group-http.interface'; import { Observable } from 'rxjs'; @Injectable() export class DynamicControlGroupService { httpService: DynamiControlGroupHttpInterface; constructor(private injector: Injector) { this.httpService = this.injector.get(DynamiControlGroupHttpToken, null, InjectFlags.Optional); } // toFormGroup(formControls: Array, originalForm: FormGroup) { // if (!originalForm) { // originalForm = new FormGroup({}); // } // formControls.forEach(control => { // originalForm.addControl(control.labelCode, new FormControl('')); // if (control.control.controlType === DYNAMIC_CONTROL_TYPE.HELP) { // const helpControl = control as IDyanmicHelpControl; // originalForm.addControl(helpControl.control.hiddenInputName, new FormControl('')); // } // }); // return originalForm; // } getFormControlsByUri(uri: string): Observable{ return this.httpService.getData(uri); } toFormValue(formControls: Array, initialData: any) { const initialDataKeys = Object.keys(initialData); formControls.forEach(control => { if (!initialDataKeys.some(item=>item==control.labelCode)) { Object.defineProperty(initialData, control.labelCode, { value: '' }); } if (control.control.controlType === DYNAMIC_CONTROL_TYPE.HELP) { let helpControl = control as IDyanmicHelpControl; if (!initialDataKeys.some(item=>item==helpControl.control.hiddenInputName)) { Object.defineProperty(initialData, helpControl.control.hiddenInputName, { value: '' }); } } }); return initialData; } }