Google карты Автозаполнение как пользовательский контроль формы и угловое изменение Обнаружение
Я использую API автозаполнения Google в моем приложении. Поскольку я хочу использовать его в качестве элемента управления формы, я также реализовал ControlValueAccessor, как и для создания пользовательского элемента управления.
Я просто вставил код из документации Google, и я заметил этот кусок кода:
this.ngZone.run(() => {
const place: any = autocomplete.getPlace();
Это работает отлично, но вызывает много обнаружения изменений, когда вы даже наводите курсор на элемент управления вводом.
Я изменился ngZone.runOutsideAngular
и я добавил applicationRef.tick()
после каждого изменения на входе. Проблема в том, что в родительской форме я могу выбрать адрес, но только когда я теряю фокус и, сосредоточившись на другом элементе управления формы, я вижу изменения. Я делаю что-то неправильно?
это мой ngOnInit:
ngOnInit() {
this.mapsAPILoader.load().then(() => {
const autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {});
autocomplete.addListener('place_changed', () => {
this.location = Object.assign(this.location,
{ formattedAddress: this.searchElementRef.nativeElement.value });
this.ngZone.runOutsideAngular(() => {
const place: any = autocomplete.getPlace();
this.locationChanged(this.location); // This is the registerOnChange of the ControlValueAccessor
this.applicationRef.tick(); // These should have operate a change detection and is not
});
});
});
}
У кого-нибудь есть идеи, как реализовать автозаполнение Google в качестве элемента управления формы без запуска внутри угловой зоны?