これは私にとってうまくいった簡単なコードです(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 キーを押してオプションを選択すると、何も起こりません。ユーザーはもう一度 Enter キーを押して、onSubmit() またはその他のコマンドをトリガーする必要があります