开发者问题收集

未捕获的类型错误:无法设置 null 的属性值

2019-03-06
2052

无法将属性“currentLat”设置为 null;我尝试全局声明所有变量,以便可以使用后者,但我不知道为什么当我调用变量并尝试设置其属性时总是得到 null。

currentLat: any;
 currentLng: any;

  ngOnInit() {
        this.watchPosition();
      }

 watchPosition() {
        var options = {
            maximumAge: 3600000,
            timeout: 3000,
            enableHighAccuracy: true,
        }
        var watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
        function onSuccess(position) {
            this.currentLat=position.coords.latitude;
            this.currentLng=position.coords.longitude ;
        };

        function onError(error) {
            alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
        }
    }
3个回答

this 在您的嵌套函数中不可用。您可以将 this (如 onSuccess.bind(this); )绑定到该函数,或轻松地将 this 分配给另一个变量。

watchPosition() {
  const that = this;
  const options = {
    maximumAge: 3600000,
    timeout: 3000,
    enableHighAccuracy: true,
  };

  const watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
  function onSuccess(position) {
    that.currentLat = position.coords.latitude;
    that.currentLng = position.coords.longitude ;
  }

  function onError(error) {
    alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
  }
}
Maihan Nijat
2019-03-06

使用箭头函数访问“this”变量:

onSuccess = (position) => {
    this.currentLat=position.coords.latitude;
    this.currentLng=position.coords.longitude ;
}
miqrc
2019-03-06

的值此 是无效的,因为您在功能中使用了它。您可以改用 箭头功能

039616305
Franklin Pious
2019-03-06