我已经在 ngOnInit()
上调用了一个函数,现在我试图从前一个函数调用另一个函数,但我无法从第二个函数中获得结果
ngOnInit() {
this.mapsAPILoader.load().then(() => {
let autocomplete = new google.maps.places.Autocomplete(this.searchElement.nativeElement, {types: ['address']});
autocomplete.addListener('place_changed', () => {
this.ngZone.run(() => {
let place: google.maps.places.PlaceResult = autocomplete.getPlace();
if (place.geometry === undefined || place.geometry === null) {
return;
}
this.codeAddress(place.formatted_address, 'pickup');
});
});
});
}
codeAddress(address: string, type) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, (results, status) => {
if (status == google.maps.GeocoderStatus.OK) {
this.getdistance();
} else {
alert('Request failed.');
}
});
}
getdistance() {
console.log('get distance called');
}
在代码中,我试图从 codeaddress()
函数调用 getdistance()
函数。但它给我的错误是 this.getdistance()
is not a function
最佳答案
您正尝试从回调中访问 this
您可以使用 function(){}.bind(this)
使函数使用正确的上下文,或者使用 ES6 箭头函数。
geocoder.geocode({ 'address': address }, (results, status) => {
if (status == google.maps.GeocoderStatus.OK) {
this.getdistance();
}
else {
alert("Request failed.");
}
});
关于angular - 从 typescript 中的另一个函数调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57864426/