ERROR TypeError: Cannot read property 'ds' of null

ERROR TypeError: Cannot read property 'ds' of null

我正在使用 angular 创建一个应用程序,该应用程序会询问使用浏览器的用户的位置。 下面是我的 ts 文件代码片段。

这是ts文件中的构造函数。

constructor(private route: ActivatedRoute, private router: Router, private ds: DataService) { }

这是函数

showposition(position) {
var lati = position.coords.latitude;
var long = position.coords.longitude;
console.log(lati, long);

this.ds.storeLocation({
  // email:this.email,
  longitude: long,
  lattitude: lati,
})
  .subscribe((response) => {
    if (response.status == "ok") {
      alert('Your location successfuly stored');
    }
    else {
      alert("error in saving location");
    }
  })

}

console.log() 正在控制台屏幕上打印纬度和经度,但 错误出现在 this.ds.storeLocation

此外,我还在 data.service.ts 文件中编写了所有必要的代码 -

storeLocation(d):any{
return this.http.post('http://localhost:3000/corona-tracker', d);
 }

根据评论,函数showposition()是一个回调函数。为了在回调中保留 this 关键字的含义,您可以使用 bind() function with this keyword, or use arrow function 表示法。尝试以下

navigator.geolocation.getCurrentPosition(this.showposition.bind(this));

您应该为 showposition 定义箭头函数,否则您应该为普通函数表达式绑定 this