在Angular2中提交表单后修改对象的变量值
问题描述:
我在提交表单后试图修改对象的纬度和经度值,因为在提交表单后我需要将地址代码函数传递给它的地址。在Angular2中提交表单后修改对象的变量值
我使用这个功能来修改纬度和经度:
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);
});
}
但是我接受该服务的纬度和经度值是原始值,而不是那些我与我的功能修改。我在这里做错了什么?提前致谢。
答
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);
});
}
什么用'回事data.lat()'和'data.lng()',它不应该只是'data.lat'和'data.lng' ,或者你的回答如何?你的'update'方法在'foo'被操作之前触发。尝试在设置新值后执行该方法:'.... this.foo.lng = data.lng; this.service.update(this.foo)....' – Alex