FormGroup, formGroup

lee jae hwan·2022년 9월 30일

앵귤러

목록 보기
75/83

formGroup : 디렉티브
FormGroup : 클래스


FormGroup 클래스

class FormGroup extends AbstractControl {
  constructor(controls: { [key: string]: AbstractControl; }, validatorOrOpts?: ValidatorFn | AbstractControlOptions | ValidatorFn[], asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[])
  
}

첫번째 인자
controls: { [key: string]: AbstractControl; }
폼콘트롤들을 인덱서블 객체형태

두번째 인자
동기식 유효성검사 함수

세번째 인자
비동기식 유효성검사 함수


formGroup 디렉티브

DOM에 있는 폼엘리먼트와 FormGroup 클래스 인스턴스를 바인딩한다.

@Input('formGroup') form: FormGroup
<form [formGroup]="heroForm" (ngSubmit)="onSubmit()">

formGroup디렉티브는 입력프로퍼티로 받은 FormGroup타입의 클래스인스턴스를 DOM 폼엘리먼트와 바인딩하는 역활을 하는 것이기 때문에 템플릿에서 formGroup디렉티브를 사용할 수 없으며 이렇게 하려면 템플릿에서 사용할 수 있는 formGroup 인스턴스가 있어야 한다.

ngForm디렉티브가 formGroup타입의 인스턴스를 생성하고 폼엘리먼트에 바인딩후 반환한다.

<form #formIns="ngForm" >

템플릿에서 formIns를 사용해서 프로퍼티들과 메소드를 사용할 수 있다.

submitted 프로퍼티와 AbstractControlDirective로부터 상속받은 invalid, pending...등 많은 프로퍼티가 있다.

onSubmit(), onReset(), resetForm()등 여러 메소드를 가지고 있다.


<form #formIns="ngForm" [formGroup]="heroForm">

ngForm 디렉티브와 formGroup 디렉티브는 독립적으로 작동한다.

템플릿폼에서는

<form #formIns="ngForm">

FormGroup인스턴스가 만들어지지 않으므로 위와같이 ngForm디렉티만 사용한다.

반응형폼에서는

<form #formIns="ngForm" [formGroup]="heroForm">

FormGroup인스턴스를 생성하므로 위와같이 사용한다.

formGroup="{{heroForm}}"
{{heroForm}}은 문자열로 형변환하기때문에 사용할 수 없다.

0개의 댓글