반응형
반응형
Angular로 폼을 다루다 보면, FormControl의 값을 가져오는 다양한 방법들을 접하게 됩니다. 대표적으로 아래 3가지 방식이 있습니다.
this.form.controls['empNo'].value
this.form.value.empNo
this.form.get('empNo').value
겉보기엔 비슷해 보이지만, 내부 구조나 사용 목적에 따라 적절한 방식이 다릅니다. 본 포스팅에서는 각 방법의 차이점과 언제 어떤 방식을 사용하는 게 좋은지 예제를 통해 정리해 보겠습니다.
1. this.form.controls ['empNo']. value
✅ 설명
controls는 FormGroup이 가지고 있는 모든 FormControl들의 집합입니다.
해당 코드는 'empNo'라는 이름의 FormControl에 직접 접근해서 값을 가져오는 방식입니다.
✅ 예시
const empNo = this.form.controls['empNo'].value;
✅ 사용 시점
- FormControl을 개별적으로 조작할 때 적합합니다.
- 예를 들어 특정 컨트롤만 disabled 시키거나, 특정 조건에 따라 값을 바꾸고자 할 때 사용합니다.
if (this.form.controls['empNo'].value === '') {
this.form.controls['empNo'].disable();
}
2. this.form.value.empNo
✅ 설명
value는 FormGroup의 전체 값을 하나의 객체로 가져옵니다.
즉, 모든 FormControl의 값을 한 번에 조회할 수 있고, 특정 key로 접근할 수 있습니다.
✅ 예시
const empNo = this.form.value.empNo;
✅ 사용 시점
- 폼 전체의 값이 필요한 경우 유용합니다.
- 예를 들어 API에 폼 전체 데이터를 넘길 때, 또는 값 비교나 저장 로직에 활용할 수 있습니다.
const formData = this.form.value;
this.http.post('/api/submit', formData).subscribe();
⚠️ 주의
- disabled 된 컨트롤은 this.form.value에 포함되지 않습니다.
- 값만 있고 control 객체에 접근할 수 없기 때문에, 상태 변경은 어렵습니다.
3. this.form.get('empNo'). value
✅ 설명
. get() 메서드는 dot notation을 지원하는 방식으로, 중첩된 FormGroup이나 FormArray 구조에서도 유용하게 사용됩니다.
✅ 예시
const empNo = this.form.get('empNo').value;
✅ 사용 시점
- 중첩된 구조의 폼에서 특정 값을 가져올 때 가장 추천되는 방식입니다.
- 코드 가독성도 높고, IDE의 자동완성 기능도 잘 작동합니다.
const city = this.form.get('address.city').value;
정리: 언제 어떤 걸 써야 할까?
방식 특징 적합한 상황
this.form.controls['empNo'].value | 컨트롤 객체 직접 접근 | 상태 제어, 유효성 검사 등 |
this.form.value.empNo | 전체 값을 객체로 반환 | API 전송, 값 저장 등 |
this.form.get('empNo').value | dot notation 가능 | 중첩 구조 접근, 가독성 필요 시 |
마무리
Angular Reactive Form은 유연하면서도 구조화된 폼 제어를 제공합니다. 세 가지 접근 방식 모두 목적과 상황에 따라 적절히 사용한다면, 보다 안정적인 폼 처리 코드를 작성할 수 있습니다.
반응형
'개발 > Angular' 카테고리의 다른 글
[Angular] 함수 바인딩(this) (1) | 2025.05.14 |
---|---|
Angular ViewEncapsulation(뷰 캡슐화) 완벽 정리 – Emulated, ShadowDom, None 차이와 실무 팁 (0) | 2025.05.12 |
Angular Reactive Form에서 this.form.value.empNo= this.empNo가 반영되지 않았던 이유 (0) | 2025.05.09 |