[angular] Angular 폼 동적 추가

다음은 Angular에서 폼 동적 추가를 구현하는 간단한 예제입니다.

목차

FormArray 만들기

import { Component } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';

@Component({
  selector: 'app-my-form',
  templateUrl: './my-form.component.html',
  styleUrls: ['./my-form.component.css']
})
export class MyFormComponent {
  form: FormGroup;

  constructor(private fb: FormBuilder) {
    this.form = this.fb.group({
      fields: this.fb.array([this.createField()])
    });
  }

  createField(): FormGroup {
    return this.fb.group({
      fieldName: '',
      // 다른 필드 정의
    });
  }

  get formData() {
    return this.form.get('fields') as FormArray;
  }

  addField() {
    this.formData.push(this.createField());
  }

  removeField(index: number) {
    this.formData.removeAt(index);
  }
}

동적으로 폼 추가하기

<form [formGroup]="form">
  <div formArrayName="fields">
    <div *ngFor="let field of formData.controls; let i = index;">
      <div [formGroupName]="i">
        <input formControlName="fieldName" placeholder="Field Name">
        <!-- 다른 필드 입력 -->
        <button (click)="removeField(i)">Remove</button>
      </div>
    </div>
  </div>
  <button type="button" (click)="addField()">Add Field</button>
</form>

위 예제를 통해 FormArray를 사용하여 Angular에서 동적으로 폼을 추가하는 방법을 보여줬습니다. 사용자가 필요에 따라 입력 필드를 추가하고 삭제할 수 있도록 하는 기능을 갖추게 될 것입니다.

이렇게 Angular에서 폼을 동적으로 추가하는 방법은 유용하고 확장 가능한 기능을 구현하는 데 도움이 됩니다.

이 예제는 Angular 10 버전 기준으로 작성되었습니다. 더 자세한 내용은 Angular 공식 문서를 참고하시기 바랍니다.