Angular 使用角度编码的反向地理编码

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的区域内执行。在使用第三方库的回调时,这种情况很容易发生,就像您在这里所做的那样

我在Angular应用程序中使用反向地理编码

所需的脚本添加到index.html中

<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();
}