Angular:无法读取属性' setLng'组件变量中的null

时间:2018-03-15 06:55:27

标签: javascript angular

我是棱角分明的新人,想问我为什么会遇到Cannot read property 'setLng' of null

import { Component, OnInit, Input } from '@angular/core';

@Component({
  selector: 'app-map',
  templateUrl: './map.component.html',
  styleUrls: ['./map.component.css']
})
export class MapComponent implements OnInit {

  lat: number = 0;
  lng: number = 0;
  maptitle : string = '';

  constructor() {
  }

  ngOnInit() {
    this.initMap();
  }
  initMap() {
      if (navigator) {
          navigator.geolocation.watchPosition(this.showPos);
      };
   }
  showPos(position) {
    this.setLng(position.coords.latitude);
    this.setLat(position.coords.latitude);
  }
  setLng(lng){
    this.lng = lng;
  }
  setLat(lat){
    this.lat = lat;
  }
}

错误

ERROR TypeError: Cannot read property 'setLng' of null
    at webpackJsonp.../../../../../src/app/map/map.component.ts.MapComponent.showPos (map.component.ts:26)
    at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
    at Object.onInvoke (core.js:4749)

1 个答案:

答案 0 :(得分:0)

问题仅在于范围。

做这样的事情:

initMap() {
      if (navigator) {
          navigator.geolocation.watchPosition(this.showPos.bind(this));
      };
   }

问题是watchPosition需要回调并且范围已更改。 通过绑定this,范围始终是类。