[angular] Angular 폼 리액티브 폼 전환

Angular 애플리케이션을 개발하다보면 템플릿 기반 폼으로 시작하여 나중에 리액티브 폼으로 전환해야 하는 경우가 종종 있습니다. 이 기사에서는 Angular 애플리케이션의 폼을 템플릿 기반에서 리액티브 폼으로 전환하는 방법에 대해 알아보겠습니다.

템플릿 기반 폼 vs. 리액티브 폼

템플릿 기반 폼은 폼 요소를 HTML 템플릿과 바인딩하여 사용자 입력을 처리합니다. 반면에, 리액티브 폼은 폼 모델을 컴포넌트 클래스에 정의하고, 이를 HTML 템플릿과 바인딩하여 폼 상태 및 입력 값을 처리합니다. 리액티브 폼은 복잡한 폼 및 유효성 검사를 수행하기에 훨씬 유용합니다.

템플릿 기반 폼에서 리액티브 폼으로 전환하기

기존 템플릿 기반의 폼을 리액티브 폼으로 전환하려면 다음 단계를 따르면 됩니다.

  1. 폼 모델 정의: FormGroupFormControl을 사용하여 컴포넌트 클래스에 폼 모델을 정의합니다.

    import { Component } from '@angular/core';
    import { FormControl, FormGroup } from '@angular/forms';
    
    @Component({
      selector: 'app-form',
      templateUrl: './form.component.html',
      styleUrls: ['./form.component.css']
    })
    export class FormComponent {
      form = new FormGroup({
        username: new FormControl(''),
        password: new FormControl('')
      });
    }
    
  2. 템플릿 변경: HTML 템플릿에서 formGroupformControlName 디렉티브를 사용하여 폼 요소를 수정합니다.

    <form [formGroup]="form" (ngSubmit)="onSubmit()">
      <input type="text" formControlName="username">
      <input type="password" formControlName="password">
      <button type="submit">Submit</button>
    </form>
    
  3. 폼 유효성 검사 추가: 추가적인 유효성 검사 및 사용자 정의 유효성 검사를 구현할 수 있습니다.

    export class FormComponent {
      form = new FormGroup({
        username: new FormControl('', Validators.required),
        password: new FormControl('', Validators.minLength(6))
      });
    }
    

이제 Angular 애플리케이션에서 템플릿 기반 폼을 리액티브 폼으로 성공적으로 전환했습니다. 리액티브 폼을 사용하면 더 많은 유연성과 제어권을 얻게 됩니다.

참고: Angular 공식 문서 - 리액티브 폼

이상으로 Angular 폼을 템플릿 기반에서 리액티브 폼으로 전환하는 방법에 대해 알아보았습니다. 감사합니다.