I have java script function which gives current lat long inside that function making an http post call like this \"this.http.post\" but the value of this null inside the
Simply store this
into a variable and use it inside the callback function. Its' quite handy
ngOnInit():void {
var self = this;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (p) {
var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude :p.coords.latitude,
longitude:p.coords.longitude
};
self.http.post('https://XXXXX/datacenteres.php', {
dataObj
})
.subscribe(
res => {
console.log(res);
},
err => {
console.log("Error occured");
}
);
}
}
}
You can use arrow function like below:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(p => {
//var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude :p.coords.latitude,
longitude:p.coords.longitude
};
this.http.post('https://XXXXX/datacenteres.php', {
dataObj
})
.subscribe(
res => {
console.log(res);
},
err => {
console.log("Error occured");
}
);
})
}
Try like this :
use .bind(this)
end of the function
ngOnInit(): void {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p) {
var LatLng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
console.log(p.coords.latitude);
console.log(p.coords.longitude);
var dataObj = {
latitude: p.coords.latitude,
longitude: p.coords.longitude
};
this.http.post('https://XXXXX/datacenteres.php', {
dataObj
}).subscribe(res => {
console.log(res);
}, err => {
console.log("Error occured");
});
}.bind(this));
}
}