首页 > 解决方案 > 离子:单击谷歌地图标记以使用 NavController 推送页面会导致点击推送页面不起作用

问题描述

成功显示推送页面后,所有绑定了 (click)='doSomething()' 的元素在推送页面中的任何位置都不起作用。推送的页面还有一个 ion-slides 元素,当滑动到新幻灯片时,所有点击事件都会立即注册(在浏览器和 android 开发应用程序中尝试过)。刷新框架可以解决问题。不确定这是我的代码中的错误还是问题。

initMap() {
  let self = this;

  //other code is here to make map, init markers etc. all working fine

  google.maps.event.addListener(marker,'click',()=> {
    self.openPage();
  });
}

函数openPage:

openPage(){
  this.navCtrl.push(PlacefeedPage);
}

值得注意:如果我从其他任何地方调用 openPage,它可以 100% 正常工作

标签: javascriptangulargoogle-mapsionic-framework

解决方案


在搜索了一段时间后,我找到了解决方案。对于遇到此问题的任何人,诀窍是使用 NgZone(导入它,在构造函数中声明),之后您可以使用:

self.ngZone.run(()=>{
    self.openPage();
 });

推荐阅读