first of all
import { FormGroup,FormArray,FormBuilder,Validators } from '@angular/forms';
then
addForm: FormGroup; // form group instance constructor(private formBuilder: FormBuilder) {} ngOnInit() { // *** this is code for adding invoice details *** this.addForm = this.formBuilder.group({ invoice_no: ['', Validators.required], file_no: ['', Validators.required], description: ['', Validators.required], linktodrive: this.formBuilder.array([ this.initLink(), ]) }); } initLink() { return this.formBuilder.group({ linkAddress: ['', Validators.required] }); } addLink() { const control = < FormArray > this.addForm.controls['linktodrive']; control.push(this.initLink()); } removeLink(i: number) { const control = < FormArray > this.addForm.controls['linktodrive']; control.removeAt(i); }
Start and close your HTML:
<div formArrayName="linktodrive"></div>
To create and delete dynamic fields in a form, use this html:
<div *ngFor="let address of addForm.controls.linktodrive.controls; let i=index"> <div> <span>Link {{i + 1}}</span> <span *ngIf="addForm.controls.linktodrive.controls.length > 1"><a (click)="removeLink(i)">REMOVE</a></span> </div> <div [formGroupName]="i"> <input type="text" placeholder="Enter Link" formControlName="linkAddress"> </div> </div>
And finally, the link "ADD"
<div><a (click)="addLink()"></a></div>
source share