在Angular2中提交表单后修改对象的变量值

时间:2017-02-19 13:08:45

标签: forms angular

我提交表单后尝试修改对象的纬度和经度值,因为在提交表单后我需要将地理编码功能传递给它的地址。

我使用此功能修改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值是原始值,而不是我用我的函数修改的值。我在这做错了什么?提前谢谢。

1 个答案:

答案 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);
     });
}