import { CompositeField } from './CompositeField'; import { BaseModel } from './BaseModel'; import { FormGroup } from '@angular/forms'; import { FormGenerator } from './interfaces/FormGenerator'; import { Validation } from './Validation'; import { Rule } from './Rule'; import { JsonSerializer } from '../utilities/JsonSerializer'; import { Serializable } from './interfaces/Serializable'; import { Field } from './Field'; export class FieldGroup extends BaseModel implements Serializable, FormGenerator { public id: string; public title: string; public section: string; public value: string; public description: string; public extendedDescription: string; public defaultVisibility: boolean; public page: number; public compositeFields: Array = new Array(); fromJSONObject(item: any): FieldGroup { this.id = item.id; this.title = item.title; this.value = item.value; this.description = item.description; this.extendedDescription = item.extendedDescription; this.defaultVisibility = item.defaultVisibility; this.page = item.page; this.compositeFields = JsonSerializer.fromJSONArray(item.compositeFields, CompositeField); return this; } buildForm(): FormGroup { const formGroup: FormGroup = this.formBuilder.group({ /* id: [this.id], title: [this.title], value: [this.value], description: [this.description], extendedDescription: [this.extendedDescription], defaultVisibility: [this.defaultVisibility], page: [this.page] */ }); const compositeFieldsFormArray = new Array(); if (this.compositeFields) { this.compositeFields.forEach(item => { const form: FormGroup = item.buildForm(); compositeFieldsFormArray.push(form); }); } formGroup.addControl('compositeFields', this.formBuilder.array(compositeFieldsFormArray)); return formGroup; } }