Angular 地理位置:错误类型错误:无法将属性“lat”设置为null
导言 我正在开发一个角度应用程序,其中我希望获得用户的当前位置,并在两个属性lng和lat中保存长度和高度,但无论我如何尝试,这似乎都不起作用;我不断得到错误TypeError:无法将属性“lat”设置为null 键入相关部分的脚本代码 错误被抛出到setValues的第一行 getCurrentPosition返回的JSON对象的相关部分 我试过的 JSON很受欢迎,我可以打印它,也可以打印它的子对象。我甚至可以将它绑定到setValues方法中的局部变量。我还尝试将该局部变量绑定到属性,但这导致了相同的错误。 将lat:any更改为lat:number或在其前面添加public。 清除setValues方法中的null运算符。 将代码放入ngOnInit方法中。Angular 地理位置:错误类型错误:无法将属性“lat”设置为null,angular,typescript,geolocation,typeerror,angular9,Angular,Typescript,Geolocation,Typeerror,Angular9,导言 我正在开发一个角度应用程序,其中我希望获得用户的当前位置,并在两个属性lng和lat中保存长度和高度,但无论我如何尝试,这似乎都不起作用;我不断得到错误TypeError:无法将属性“lat”设置为null 键入相关部分的脚本代码 错误被抛出到setValues的第一行 getCurrentPosition返回的JSON对象的相关部分 我试过的 JSON很受欢迎,我可以打印它,也可以打印它的子对象。我甚至可以将它绑定到setValues方法中的局部变量。我还尝试将该局部变量绑定到属性,但这
所有这些尝试都导致了相同的错误。我不能100%确定问题出在哪里,但这与作用域有关,通过创建匿名回调函数,它似乎可以正常工作
constructor() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((values) => {
this.lat = values?.coords?.latitude
this.lng = values?.coords?.longitude;
});
}
}
您可以使您的函数匿名:
setValues = (values) => {
this.lat = values?.coords?.latitude
this.lng = values?.coords?.longitude;
}
问题在于它在不同范围内所指的内容。在这种情况下,当您使用箭头函数时,它仅指组件的外部范围。否则,这是指功能本身 通过设置以下测试,您可以亲自看到它的运行: 恩戈尼特{ //1.委托职能 this.getvalues this.setValues; //2.函数{} 此文件为.getValuesfunctionvalues{ console.logthis; }; //3.箭头功能 this.getValuesvalues=>this.setValuesvalues; } GetValueScalBack:values=>void{ 回拨{ 拉丁语:1, 长:2 }; } 设置值值{ console.logthis; } 这显示了作为回调传入函数的3种不同方式。1.二,。将未定义的日志记录到控制台。3.将在我的演示中记录包含类AppComponent 演示:
constructor() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((values) => {
this.lat = values?.coords?.latitude
this.lng = values?.coords?.longitude;
});
}
}
setValues = (values) => {
this.lat = values?.coords?.latitude
this.lng = values?.coords?.longitude;
}