Ionic + Angular2 谷歌地图层事件侦听器模型绑定



我有一个用标记初始化的地图。每当我点击一个标记时,我都会更新Ngmodel。最终,这应该反映在离子搜索栏中。每当视图加载时,我都会调用 initMap((,它将映射与此侦听器一起加载:

google.maps.event.addListener(layer, 'click', function(e) {
this.searchValue = e.row['name'].value;
});

在我的模板中:

<ion-searchbar [(ngModel)]="searchValue"></ion-searchbar>

每当我在声明中将值设置为 searchValue 时,它都会显示在离子搜索栏中,但在单击标记后不会显示。标记单击事件确实有效,因为如果我控制台日志 e.row['name'].value ,我得到正确的值,它似乎没有绑定。

尝试导入NgZone并利用其run()方法,显式地使代码在 Angulars 区域内运行,并在之后触发更改检测。同时将function(e){...}更改为(e) => {},这对this没有约束力。

import { Component, NgZone } from '@angular/core';
@Component({
...
})
export class SomeComponent{
someValue: string;
constructor(private zone: NgZone){}
initMap(){
...
google.maps.event.addListener(layer, 'click', (e) => {
this.zone.run(() => {  
this.searchValue = e.row['name'].value;
});
});
}
...
}

最新更新