import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { Contact, ContactService } from '@nested-forms/contact'; import { Subscription } from 'rxjs'; import { AddressListComponent } from './address-list/address-list.component'; import { NameComponent } from './name/name.component'; @Component({ selector: 'nested-forms-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], changeDetection: ChangeDetectionStrategy.OnPush, }) export class AppComponent implements OnInit, OnDestroy { contact: Contact; form: FormGroup; private subscription: Subscription; constructor(private service: ContactService, private fb: FormBuilder) {} public ngOnInit() { this.subscription = this.service .loadContact() .subscribe((data: Contact) => { this.contact = data; this.form = this.fb.group({ name: NameComponent.buildForm(data.name), addresses: AddressListComponent.buildForm(data.addresses), }); }); } public ngOnDestroy() { if (this.subscription) { this.subscription.unsubscribe(); } } }