본문 바로가기
FrontEnd/Angular

ngModel cannot be used to register form controls with a parent formGroup directive.

by Fathory 2020. 5. 27.
ERROR Error: 
      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using
      formGroup's partner directive "formControlName" instead.  Example:
 
       
    <div [formGroup]="myGroup">
      <input formControlName="firstName">
    </div>
 
    In your class:
 
    this.myGroup = new FormGroup({
       firstName: new FormControl()
    });
 
      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:
 
      Example:
 
       
    <div [formGroup]="myGroup">
       <input formControlName="firstName">
       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">
    </div>

 

해결방법 : formGroup 속성을 가진 태그의 하위 요소 중 ngModel을 사용하고있는 모든 요소는 formControlName 속성을 가지고 있어야 한다.

ngModel을 사용하는 모든 요소에 formControlName을 사용한다.

ts파일에서 formBuilder를 사용하여 form group을 생성하고, 필요한 formControlName을 모두 추가한다.

 

<!-- 에러 발생 -->
<div [formGroup]=formGroupName>
	<input type="text name="a" [(ngModel)]="testModel"/>
</div>

<!-- 에러 미발생 -->
<div [formGroup]=formGroupName>
	<input formControlName="inputTest" type="text name="a" [(ngModel)]="testModel"/>
</div>
// ts

constructor(
	public FormBuilder fb = FormBuilder;
){
 	this.fb.group({
    	a: [new FormControl(inputTest)],
    	b: [new FormControl(somethingTest)]
    });
}
반응형

'FrontEnd > Angular' 카테고리의 다른 글

Angular 시작하기 - 1  (0) 2019.07.10
Angular 기본용어 정리  (0) 2019.07.08
Angular2 에서 jQuery 사용법  (0) 2019.07.07
Angular 페이지 만들기  (0) 2019.07.06
Angular 시작하기  (0) 2019.07.05