import {Component} from '@angular/core'; import {FormArray, FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms'; @Component({ selector: 'app-template-forms', template: `
First Name:
Last Name:
Subscribe:
Disabled:
City
`, }) export class TemplateFormsComponent { name = {first: 'Nancy', last: 'Drew', subscribed: true}; addresses = [{city: 'Toronto'}]; constructor() { // We use this reference in our test (window as any).templateFormsComponent = this; } addCity() { this.addresses.push(({city: ''})); } } @Component({ selector: 'app-reactive-forms', template: `
First Name:
Last Name:
Subscribe:
Disabled:
City:
`, }) export class ReactiveFormsComponent { profileForm!: FormGroup; addresses!: FormArray; get itemControls() { return (this.profileForm.get('addresses') as FormArray).controls; } constructor(private formBuilder: FormBuilder) { // We use this reference in our test (window as any).reactiveFormsComponent = this; } ngOnInit() { this.profileForm = new FormGroup({ firstName: new FormControl('', Validators.required), lastName: new FormControl(''), addresses: new FormArray([]), subscribed: new FormControl(), disabledInput: new FormControl({value: '', disabled: true}), }); this.addCity(); } createItem(): FormGroup { return this.formBuilder.group({ city: '', }); } addCity(): void { this.addresses = this.profileForm.get('addresses') as FormArray; this.addresses.push(this.createItem()); } } @Component({ selector: 'app-root', templateUrl: './app.component.html', }) export class AppComponent { }