2017-02-19 3 views
1

Ich versuche, die Werte für den Breiten- und Längengrad eines Objekts zu ändern, nachdem ich das Formular abgeschickt habe, weil ich eine Geocode-Funktion an die Adresse übergeben muss.Ändern Sie den Variablenwert eines Objekts, nachdem Sie das Formular in Angular2 gesendet haben.

ich diese Funktion bin mit dem lat und lng ändern:

setLanLon(address : string){ 
this.getLatLon(address).subscribe(
      data => { 
       this.foo.lat= data.lat(); 
       this.foo.lng= data.lng(); 
      }, 
      error => { 
       console.log(error); 
      }); 
} 

und die Funktion, die auf dem Formular und genannt wird, worin ich rufe die Funktion, die die Werte ändert, ist dies ein :

edit() { 
    this.setLanLon(this.foo.address); 
    this.service.update(this.foo) 
     .subscribe(
      data => { 
       this.router.navigate(['/home']); 
      }, 
      error => { 
       console.log(error); 
      }); 
} 

Aber die lat und lng Werte, die ich in den Dienst erhalten, sind die ursprünglichen Werte nicht die, die ich mit meiner Funktion ändern. Was mache ich hier falsch? Danke im Voraus.

+0

Was ist los mit 'data.lat()' und 'data.lng()', sollte es nicht nur sein, 'data.lat' und' data.lng' oder wie sieht deine Antwort aus? Und Ihre 'update'-Methode wird ausgelöst, bevor' foo' manipuliert wurde. Versuchen Sie, die Methode nach dem Einstellen der neuen Werte auszuführen: '.... this.foo.lng = data.lng; this.service.update (this.foo) .... ' – Alex

Antwort

2
this.service.update(this.foo) 

vor dem

beendet Ausführung und Einstellung der neuen Werte für foo, deshalb werden die alten Werte gesendet

this.setLanLon(this.foo.address); 
ausgeführt.

Zweitens, überprüfen Sie, welche Antwort erhalten Sie tatsächlich von setLanLon, so dass Sie die richtigen Werte haben.

diese So versuchen:

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

Das Problem war, wie Sie sagten, dass meine Update-Methode gefeuert wurde, bevor Sie die Werte änderten, ich änderte es wie Sie sagten und jetzt funktioniert es. Die Antwort von getLanLon war in Ordnung. Vielen Dank für Ihre Zeit. – Ayane

+0

Okay, großartig. Froh, dass ich helfen konnte! :) Glückliche Codierung! – Alex

Verwandte Themen