반응형
AngularJS 를 공부하는 중 input 태그에 이벤트를 다루는 중 해당 이벤트의 값을 가져오지 못하는 오류를 만났습니다.
해당 오류의 원인과 해결 방법을 기록합니다.
오류 & 오류 원인
예제 1
<input type="text" (input)="handleInput($event)" />
value = '';
handleInput(event: Event) {
this. value = event.target.value;
}
예제 2
<input type="text" (keyup)="value=$event.target.value" />
오류가 나는 비슷한 패턴은 예제1 또는 예제2 에서 발생합니다.
오류의 원인은 TypeScript 가 event.target 의 정확한 타입이 무엇인지 모르기 때문에 발생하는 오류입니다.
예를 들어 target 이 HTMLInputElement 인지 HTMLTextareaElement 인지 모른다는 것입니다.
해결 방법
오류를 해결하는 방법은 두 가지 방법이 있습니다.
예제 1
value = '';
handleInput(event: Event) {
this.value = (event.target as HTMLInputElement).value;
}
TypeScript 에게 타입이 무엇인지 알려주는 것
예제 2
<input type="text" (keyup)="value=$any($event.target).value" />
TypeSciprt 에게 이 타입은 어떤 타입이든 될 수 있으니 타입 검사를 하지 말라고 지시하는 것
예제 3 (Angular13 미만)
이 외에 컴파일러 옵션 중 fullTemplateTypeCheck
을 false
로 수정하는 것이 있습니다.
그러나 Angular13 이상부터는 사용되지 않는 옵션이므로 예제1, 2로 해결하는 것을 추천합니다.
참고자료
반응형
'Programming > Angular' 카테고리의 다른 글
Angular(Front) + Node.js(Back) 연동하기 (0) | 2022.07.15 |
---|---|
AngularJS :: @angular-cli로 파일 생성 시 html, css, spec 파일 생기지 않게 하기 (0) | 2022.06.21 |
AngularJS :: control must be defined as 'standalone' in ngModelOptions 오류 해결 (0) | 2022.06.20 |
GitHub Page에 Angular 배포하기 (0) | 2022.06.17 |
AngularJS :: Subscribe Arguments 경고 해결 (0) | 2022.06.16 |