无法在ngOnInit内调用AppComponent函数:“对象不支持属性或方法”

时间:2019-06-03 13:31:46

标签: node.js angular typescript

我是Angular的新手,正在尝试从同一类的ngOnInit函数中的AppComponent类调用函数setCenter2(),这可能吗?当我单击地图时,基本上是当它尝试调用我的函数时(我使用OpenStreetMap),我收到此错误:ERROR TypeError:对象不支持属性或方法“ setCenter2”。告诉我是否需要更多我的代码,谢谢。执行此操作时是否需要特别注意某些事项?

我已经了解了Internet Explorer的错误,但事实并非如此,我使用Edge并使用了最新版本的Angular。

export class AppComponent {

[…]

setCenter2() {
  var view = this.map.getView();
  view.setCenter(ol.proj.fromLonLat([this.longi1, this.lati1]));
  view.setZoom(this.zoom);
}

[…]

ngOnInit() {

  […]

  this.map.on('click', function (args) {
    console.log(args.coordinate);
    var lonlat = ol.proj.transform(args.coordinate, 'EPSG:3857', 'EPSG:4326');
    console.log(lonlat);

    // var lon = lonlat[0];
    // var lat = lonlat[1];
    //alert(`lat: ${lonlat[1]} et long: ${lonlat[0]}`);
    eval("this.longi1 = lonlat[0];"); 
    eval("this.lati1 = lonlat[1];");

    this.setCenter2();
    alert(`lati: ${this.lati1} et longi: ${this.longi1}`);
  }); 
}

1 个答案:

答案 0 :(得分:1)

使用粗箭头功能,因为您失去了this的值:

this.map.on('click', args => {