【问题标题】:How to call a typescript function inside callback of a JavaScript如何在 JavaScript 的回调中调用打字稿函数
【发布时间】:2018-06-08 06:41:12
【问题描述】:

我在 Angular 5 前端框架中使用 javascript Google Maps 组件

export class MapComponent implements OnInit {
  ngOnInit() {
    this.initializeGMap()
  }

  initializeGMap() {
    var myLatlng = new google.maps.LatLng(12,77);

    var mapOptions = {
        zoom: DEFAULT_MAP_ZOOM,
        center: myLatlng,
        scrollwheel: true,
        styles: MAP_STYLE
    };
    this.map = new google.maps.Map(document.getElementById("map"), mapOptions);
    this.initOnMapClickListener();
  }

  initOnMapClickListener() {
      google.maps.event.addListener(this.map, 'click', function(event) {

      var selectedLocation = new google.maps.LatLng(event.latLng.lat(), event.latLng.lng());
      this.addMarker(selectedLocation)
    });
  }

addMarker(latlng) {
    var marker = new google.maps.Marker({
      position: latlng,
      map: this.map,
      icon: './assets/map_marker.png'
    });
  }

}

上面是我的打字稿文件,它有三个功能

  1. initializeGMap() //初始化谷歌地图
  2. initOnMapClickListener() //初始化地图点击监听
  3. addMarker(latlng) // 在 onmapclick 事件发生时添加标记

未捕获的类型错误:无法读取 null 的属性“addMarker”

这是我在运行 Angular 应用程序时遇到的控制台错误

请帮助理解如何在 Javascript 回调中调用 typescript 函数

【问题讨论】:

  • 你能显示你的html页面吗?
  • Pradeep Join 的回答是正确的,有效

标签: javascript angular typescript callback angular5


【解决方案1】:

尝试像这样使用箭头函数=>调用函数来绑定到this的松弛范围-

initOnMapClickListener() {
      google.maps.event.addListener(this.map, 'click', (event) => {

      var selectedLocation = new google.maps.LatLng(event.latLng.lat(), event.latLng.lng());
      this.addMarker(selectedLocation)
    });
  }

【讨论】:

  • 完美解决方案! (关于投票者,是的,请为自己辩护!)
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2020-04-24
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2023-02-09
相关资源
最近更新 更多