-
[Angular] input 한글 입력시 짤림 현상■ Front-End/- Angular 2020. 4. 10. 00:57
⚠️ Problem
검색 컴포넌트를 개발하던 중, 검색 input에 한글을 입력했을 때 검색 결과가 조금 이상하다는 것을 발견하게 되었다.
영어를 입력했을 땐 정상적으로 검색되지만, 한글을 입력할 땐 마지막에 입력한 한글이 짤린채로 검색 method를 호출하고 있었다.
영어 입력시
한글 입력시
-> '가나'를 입력했지만, 실제 input text에는 '가'만 나옴. 스페이스바나 방향키를 눌러야 '가나'로 인식함.
✅ Solution
구글링한 결과, 한 블로그에서 해결방법을 찾게 되었다.
한글과 같은 조합형 문자의 경우, 일반적으로 글자 입력 후 space나 enter 등을 통하여 문자 입력을 완료한 시점에 compositioned 라는 이벤트가 발생한다. 이 이벤트에 따라 Angular는 양방향 바인딩을 처리한다. 작성중인 문자를 모두 바인딩하기 위해서는 Angular에서 제공되는 COMPOSITION_BUFFER_MODE를 변경해야 한다.
app.module.ts 파일에 아래와 같이 추가한다.
// 1. 'COMPOSITION_BUFFER_MODE' import import { COMPOSITION_BUFFER_MODE } from '@angular/forms'; @NgModule({ declarations: [AppComponent, ... ], imports: [ BrowserModule, ReactiveFormsModule, FormsModule, ... ], providers: [ { provide: ErrorHandler, useClass: ErrorService, }, // 2. value provider 추가 { provide: COMPOSITION_BUFFER_MODE, useValue: false } ], bootstrap: [AppComponent] })
코드를 추가한 뒤 다시 테스트해보면, 한글을 입력할 때마다 이벤트가 발생함을 알 수 있다.
COMPOSITION_BUFFER_MODE 와 useValue에 대한 정보는 아래 참고 사이트에 자세히 나와있으니 참고할 것!
참고 사이트
https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionend_event
http://devstory.ibksplatform.com/2017/07/angular2.html
https://angular.io/api/forms/COMPOSITION_BUFFER_MODE
https://poiemaweb.com/angular-service
'■ Front-End > - Angular' 카테고리의 다른 글
[Angular] libs 폴더 내 assets 프로젝트에서 사용하기 (0) 2020.06.03 Nx.dev를 이용한 Angular 프로젝트 만들기 (0) 2020.05.10 [Angular] ngx-translate를 이용한 다국어 처리 (0) 2020.04.02 Angular9 production build fail 이슈 처리 (0) 2020.03.25 [Angular] Directive (0) 2020.01.28