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 в качестве элемента управления формы без запуска внутри угловой зоны?

0 ответов

Другие вопросы по тегам