自动完成下拉输入选择不触发 ngModelChange

Autocomplete dropdown input selection not triggering ngModelChange

当我从下拉列表中选择 google 地图地址自动完成结果时,它不会传递到我的父组件,但当我手动输入地址时它会传递。

我将开始输入,它会传递信息,一旦我 select 一个地址,它就会为我填充其余部分,但不会传递该数据,即使它显示在输入中盒子.

我正在使用此输入(在子模板中)通过 google 映射获取地址 div:

<input
  [(ngModel)]="address"
  (ngModelChange)="addressChange.emit($event)"
  id="pac-input"
  name='address'
  class="mapControls"
  type="text"
  placeholder="Enter Address"
>

在我的子组件中:

@Component({
  selector: 'gmap',
})

export class gMap{
  @Input() address;
  @Output() addressChange = new EventEmitter();
}

在我的父模板中:

<gmap [(address)]="address"></gmap>

和父组件:

address: string;

显然还有更多代码,但这是我认为的重要内容。任何人都知道如何做到这一点,所以当我 select 下拉菜单的自动完成结果时,它会使用从 selection?

中选择的数据触发 ngModelChange

我修复了它,我这样做了:

因为我们使用的是打字稿,所以我更改了 google 的全部

function()

() =>

然后,google地图代码下的这些功能

searchBox.addListener('place_changed', () => {
    places.forEach((place) => {

我给发射器打了电话

this.addressChange.emit(place.formatted_address);

有很大的延迟,有时像 20 秒,但它有效!

有人知道为什么我从下拉列表中选择和发射器熄灭之间有几秒钟的延迟吗?我真的很想删除延迟

如果使用 promise 对象,那么响应会非常快。

return new Promise((resolve, reject) =>{
  autocomplete.addListener('place_changed', () => {
     var place = autocomplete.getPlace();
     console.log("place "+place);
    resolve(place);
  });
})