Angular 铁路超高从事件侦听器/2的函数内部访问变量

Angular 铁路超高从事件侦听器/2的函数内部访问变量,angular,google-maps,scope,Angular,Google Maps,Scope,我正在使用谷歌地图api v3,我的地图上有一些多边形。我试图添加一个事件,该事件在单击时会将它们全部删除,并在该事件的回调函数中调用另一个函数,但我一直收到TypeError:无法读取第64行未定义的属性“length”(在事件侦听器中,它告诉我未定义Polys数组)。此外,如果我尝试在侦听器中添加一个函数,它将无法识别它,我认为这与范围问题有关,但我不知道如何解决它。 提前谢谢你的帮助 导出类InicioComponent实现OnInit,AfterViewInit{ 地点:地点[]=[]

我正在使用谷歌地图api v3,我的地图上有一些多边形。我试图添加一个事件,该事件在单击时会将它们全部删除,并在该事件的回调函数中调用另一个函数,但我一直收到TypeError:无法读取第64行未定义的属性“length”(在事件侦听器中,它告诉我未定义Polys数组)。此外,如果我尝试在侦听器中添加一个函数,它将无法识别它,我认为这与范围问题有关,但我不知道如何解决它。 提前谢谢你的帮助

导出类InicioComponent实现OnInit,AfterViewInit{
地点:地点[]=[];
区域:区域[];
多边形:任意[]=[];
构造函数(专用LocationService:LocationService,专用路由器:路由器){}
getLocaciones():void{
this.locacionService.getLocaciones()。然后(locaciones=>this.locaciones=locaciones);
}
公用loadLocaciones(路由器:路由器){
for(设i=0;i{
router.navigate(['/locacion',this.locaciones[i].id]);
});
}
}
getRegiones(){
this.locacionService.getRegiones()。然后(regiones=>{
this.regiones=regiones;
console.log(this.regiones);
});
}
loadRegiones(regiones:Region[]){
for(设i=0;i}
您需要使用箭头函数
()=>
,而不是
函数
关键字。当您使用
函数
关键字时,您将范围放宽到
。将代码更改为:

google.maps.event.addListener(p, 'click', (event) => {
    for( let j = 0; j < this.polys.length; j++) {
        this.polys[j].setMap(null);
    }
    this.loadLocaciones();
  });
google.maps.event.addListener(p,'click',(event)=>{
for(设j=0;j
您需要使用箭头函数
()=>
,而不是
函数
关键字。当您使用
函数
关键字时,您将范围放宽到
。将代码更改为:

google.maps.event.addListener(p, 'click', (event) => {
    for( let j = 0; j < this.polys.length; j++) {
        this.polys[j].setMap(null);
    }
    this.loadLocaciones();
  });
google.maps.event.addListener(p,'click',(event)=>{
for(设j=0;j
您最好参考此问题-您最好参考此问题-