在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); 
      }); 
} 

但是我接受该服务的纬度和经度值是原始值,而不是那些我与我的功能修改。我在这里做错了什么?提前致谢。

+0

什么用'回事data.lat()'和'data.lng()',它不应该只是'data.lat'和'data.lng' ,或者你的回答如何?你的'update'方法在'foo'被操作之前触发。尝试在设置新值后执行该方法:'.... this.foo.lng = data.lng; this.service.update(this.foo)....' – Alex

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); 
    }); 
} 
+0

问题是因为你说我的更新方法在更新值之前被解雇了,我改变了它,就像你说的,现在它的工作原理。 getLanLon的响应很好。谢谢你的时间。 – Ayane

+0

好吧,太棒了。很高兴我能帮上忙! :)快乐的编码! – Alex