• 需求:在页面中默认显示一组联系方式,通过点击按钮可以添加更多联系方式组

      1. export class HelloComponent implements OnInit {
      2. // 表单
      3. contactForm: FormGroup = new FormGroup({
      4. contacts: new FormArray([])
      5. })
      6. // 获取表单中的 contactForm.contacts
      7. get contacts() {
      8. return this.contactForm.get("contacts") as FormArray
      9. }
      10. // 添加联系方式
      11. addContact() {
      12. // 联系方式
      13. const myContact: FormGroup = new FormGroup({
      14. name: new FormControl(),
      15. address: new FormControl(),
      16. phone: new FormControl()
      17. })
      18. // 向联系方式数组中添加联系方式
      19. this.contacts.push(myContact)
      20. }
      21. // 删除联系方式
      22. removeContact(i: number) {
      23. this.contacts.removeAt(i)
      24. }
      25. ngOnInit() {
      26. // 添加默认的联系方式
      27. this.addContact()
      28. }
      29. onSubmit() {
      30. console.log(this.contactForm.value)
      31. }
      32. }
      1. <form [formGroup]="contactForm" (submit)="onSubmit()">
      2. <div formArrayName="contacts">
      3. <div *ngFor="let contact of contacts.controls; let i = index" [formGroupName]="i">
      4. <input type="text" formControlName="name" />
      5. <input type="text" formControlName="address" />
      6. <input type="text" formControlName="phone" />
      7. <button (click)="removeContact(i)">删除联系方式</button>
      8. </div>
      9. </div>
      10. <button (click)="addContact()">添加联系方式</button>
      11. <button>提交</button>
      12. </form>