Angular 使用角度编码的反向地理编码
我在Angular应用程序中使用反向地理编码 所需的脚本添加到index.html中Angular 使用角度编码的反向地理编码,angular,google-maps-api-3,geocoding,reverse-geocoding,Angular,Google Maps Api 3,Geocoding,Reverse Geocoding,我在Angular应用程序中使用反向地理编码 所需的脚本添加到index.html中 <script async defer src="https://maps.googleapis.com/maps/api/js"> </scrip> 打印了正确的值。我在这里看到了两种可能性,但如果没有复制就无法确认,因此我将列出这两种可能性 1) 你不在安格尔区 用于更改显示变量的代码未在Angular的区域内执行。在使用第三方库的回调时,这种情况很容易发生,就像您在这里所做的那样
<script async defer src="https://maps.googleapis.com/maps/api/js">
</scrip>
打印了正确的值。我在这里看到了两种可能性,但如果没有复制就无法确认,因此我将列出这两种可能性 1) 你不在安格尔区 用于更改显示变量的代码未在Angular的区域内执行。在使用第三方库的回调时,这种情况很容易发生,就像您在这里所做的那样 要修复此问题,请插入
NgZone
,并使用this.NgZone.run
,将希望反映在UI中的任何更改打包,如以下代码段所示
constructor(private ngZone: NgZone) {}
locate() {
/* ... */
this.ngZone.run(() => {
this.location = results[0].formatted_address
})
/* ... */
}
2) 错误的此
在过程中的某个地方,您丢失了指向类实例的this
,而是将结果写入其他内容。您的console.log
工作是因为它也记录了错误的this
,Angular没有显示任何内容,因为实际属性没有更改。当您设置此位置时,您的组件可能尚未初始化。Angular不控制何时调用构造函数
您应该尝试放置locate
调用ngOnInit
,以确保组件准备好显示数据绑定属性:
ngOnInit() {
this.locate();
}
你不在Angular的区域
回答正确吗谢谢,我试着把电话打到ngOnInit
上,但它不起作用,但ngZone
解决了问题。你救了我的命:)@M.J,对我来说它显示了一个错误,如下错误参考错误:谷歌没有定义
谢谢,你的代码帮我启动了我的地理编码器!
console.log(this.address);
constructor(private ngZone: NgZone) {}
locate() {
/* ... */
this.ngZone.run(() => {
this.location = results[0].formatted_address
})
/* ... */
}
ngOnInit() {
this.locate();
}