다음은 저에게 잘 작동하는 간단한 코드입니다 (jquery를 사용하지 않음).
const googleAutcompleteField = this.renderer.selectRootElement(this.elem.nativeElement);
this.selectOnEnter(googleAutcompleteField);
위 코드를 따르는이 코드는 Google지도 자동 완성을 구현하는 데 사용됩니다 (이 질문에서 찾은 Enter 키 기능 유무에 관계없이).
this.autocomplete = new google.maps.places.Autocomplete(googleAutcompleteField, this.googleMapsOptions);
this.autocomplete.setFields(['address_component', 'formatted_address', 'geometry']);
this.autocomplete.addListener('place_changed', () => {
this.zone.run(() => {
this.googleMapsData.emit([this.autocomplete.getPlace()]);
})
})
selectOnEnter (위의 첫 번째 코드에서 호출 됨)는 다음과 같이 정의됩니다.
selectOnEnter(inputField) {
inputField.addEventListener("keydown", (event) => {
const selectedItem = document.getElementsByClassName('pac-item-selected');
if (event.key == "Enter" && selectedItem.length != 0) {
event.preventDefault();
}
})
}
이 코드는 Google지도 자동 완성 필드가 사용자가 아래쪽 화살표 키를 눌러 선택하는 항목을 선택하도록합니다. 사용자가 Enter 키를 눌러 옵션을 선택하면 아무 일도 일어나지 않습니다. onSubmit () 또는 다른 명령을 트리거하려면 사용자가 Enter 키를 다시 눌러야합니다.