import { Injectable } from '@angular/core'; import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; import { Contact, Name, Address } from '@nested-forms/contact'; @Injectable({ providedIn: 'root', }) export class ContactFormService { constructor(private fb: FormBuilder) {} public createForm(model: Contact): FormGroup { return this.fb.group({ name: this.createContactNameForm(model.name), addresses: this.createContactAddressListForm(model.addresses), }); } public createContactNameForm(name: Name): FormGroup { return this.fb.group({ firstName: [name ? name.firstName : ''], lastName: [name ? name.lastName : ''], middleName: [name ? name.middleName : ''], prefix: [name ? name.prefix : ''], suffix: [name ? name.suffix : ''], }) } public createContactAddressListForm(addresses: Address[]): FormArray { const list: FormArray = this.fb.array([]); if (addresses) { addresses.forEach(addr => { list.push(this.createContactAddressForm(addr)); }); } return list; } public createContactAddressForm(addr: Address): FormGroup { return this.fb.group({ line1: [addr ? addr.line1 : ''], line2: [addr ? addr.line2 : ''], city: [addr ? addr.city : ''], state: [addr ? addr.state : ''], postalCode: [addr ? addr.postalCode : ''], }); } }