에러 백과

누락된 폼 컨트롤 값

FormGroup이나 FormArray에서 setValue를 호출할 때 전달한 값에 등록된 컨트롤 중 하나의 항목이 빠져 있으면 이 오류가 발생합니다.

setValue는 모든 컨트롤의 값이 있어야 한다는 조건을 엄격하게 적용합니다. 일부 컨트롤만 갱신하려면 patchValue를 사용하세요.

오류 디버깅

오류 메시지에 어떤 컨트롤이 표시되는지 확인하고, 값 객체에 해당 컨트롤의 값이 포함되어 있는지 확인하세요.

모든 키가 들어 있지 않은 객체를 전개할 때 이 오류가 흔히 발생합니다.

const someValue = {first: 'Nancy'}; // 'last'가 누락됨

form.setValue({...someValue}); // NG01002 발생

someValue가 API 응답이나 부분적인 상태 갱신에서 왔거나 폼 구조와 완전히 일치하지 않는 타입인 경우 이런 문제가 발생할 수 있습니다. 이때는 누락된 키를 명시적으로 채우거나 patchValue로 바꾸세요.

FormGroup

const form = new FormGroup({
  first: new FormControl(''),
  last: new FormControl(''),
});

// 값에 'last'가 없음: NG01002 발생
form.setValue({first: 'Nancy'});

// 두 컨트롤의 값을 모두 제공하므로 정상 동작
form.setValue({first: 'Nancy', last: 'Drew'});

FormArray

const formArray = new FormArray([new FormControl(''), new FormControl('')]);

// 두 컨트롤에 값 하나만 제공함: NG01002 발생
formArray.setValue(['Nancy']);

// 컨트롤마다 값을 하나씩 제공하므로 정상 동작
formArray.setValue(['Nancy', 'Drew']);