我提交表单后尝试修改对象的纬度和经度值,因为在提交表单后我需要将地理编码功能传递给它的地址。
我使用此功能修改lat和lng:
setLanLon(address : string){
this.getLatLon(address).subscribe(
data => {
this.foo.lat= data.lat();
this.foo.lng= data.lng();
},
error => {
console.log(error);
});
}
在表单提交上调用的函数以及我调用修改值的函数的函数就是这个:
edit() {
this.setLanLon(this.foo.address);
this.service.update(this.foo)
.subscribe(
data => {
this.router.navigate(['/home']);
},
error => {
console.log(error);
});
}
但是我在服务中收到的lat和lng值是原始值,而不是我用我的函数修改的值。我在这做错了什么?提前谢谢。
答案 0 :(得分:2)
this.service.update(this.foo)
在
之前执行this.setLanLon(this.foo.address);
已完成执行并为foo
设置新值,因此会发送旧值。
其次,请检查您实际从setLanLon
获得的回复,以便设置正确的值。
所以试试这个:
edit() {
this.setLanLon(this.foo.address);
}
setLanLon(address : string){
this.getLatLon(address).subscribe(
data => {
this.foo.lat= // check response what to assign
this.foo.lng= // check response what to assign
this.service.update(this.foo)
.subscribe(
data => {
this.router.navigate(['/home']);
},
error => {
console.log(error);
});
},
error => {
console.log(error);
});
}