【发布时间】:2021-10-18 21:30:04
【问题描述】:
我正在使用 Angular 9 构建一个用于使用谷歌地图服务进行地址搜索的自动完成组件。我的组件可以工作,但是当没有可用的搜索时,我需要使用 BLUR 事件或当输入失去焦点时。
目前该组件会在我选择地址时检测到,但我需要让它在找不到任何内容时也检测到我键入的文本。
我的html:
<input #search class="form-control" [formControl]="myAddress" type="text" placeholder="Enter a location">
我的ts:
export class AddressComponent implements OnInit {
@Output() onSelectAddress = new EventEmitter<CustomAddressModel>();
myAddress = new FormControl('');
selectedAddress: PlaceResult;
@ViewChild('search')
searchElementRef: ElementRef;
constructor(
private _mapsAPILoader: MapsAPILoader,
private ngZone: NgZone,
) { }
ngOnInit(): void {
this._mapsAPILoader.load().then(() => {
const autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement);
autocomplete.addListener("place_changed", () => {
this.ngZone.run(() => {
this.selectedAddress = autocomplete.getPlace();
if (!this.selectedAddress.geometry) {
return;
}
const result = {
lat: this.selectedAddress.geometry.location.lat(),
long: this.selectedAddress.geometry.location.lng(),
strAddress: this.selectedAddress.formatted_address
} as CustomAddressModel;
this.onSelectAddress.emit(result);
});
});
});
}
}
有什么想法吗?
【问题讨论】:
标签: javascript angular events maps