2017-12-07 5 views
0

I update 'lat' und 'lon' Werte innerhalb FormArray müssen:Angular2 aktualisieren Form Wert innerhalb FormArray

initRows() { 
     return this._fb.group({ 
      address: "", 
      lat: 0, 
      lon: 0, 
     }); 
    } 




initForm() { 
     this.searchForm = this._fb.group({ 
     addresses: this._fb.array([this.initRows()]), 
    }); 

ich sie nach dem Rückruf aktualisieren:

this.someService.getData().subscribe(
        (response) => {this.data = response.json() 
           this.lon = this.data.x; 
           this.lat = this.data.y; 
           // UPDATE MY 'lat' and 'lon' 
        }, 
        (error) => console.log('ERROR: ' + error) 
     ); 

form.value Objekt:

{ 

    "addresses": [ 
    { 
     "address": { 
     "text": "Weberweg, 58566, Kierspe, Nordrhein-Westfalen, DEU" 
    }, 
     "lat": 0, 
     "lon": 0 
    }, 
    { 
     "address": { 
     "text": "Weberweg, 58566, Kierspe, Nordrhein-Westfalen, DEU" 
    }, 
     "lat": 0, 
     "lon": 0 
    } 
    ] 
} 

PS ‚Lat‘ und ‚lon‘ nicht ein Eingänge, nur Daten

Antwort

0

Ich bin nicht sicher, ist es „richtige“ Art und Weise, aber Sie können dies tun:

/* getter for addresses. 
    get addresses() { 
     this.seachForm.controls.addresses as FormArray; 
    } 

    /* function for loading data */ 
    public loadData() { 
     this.someService.getData().subscribe(
      (response) => { 
          this.data = response.json() 
          this.lon = this.data.x; // it is global lon like I understood 
          this.lat = this.data.y; // it is global lat like I understood 
          this.addresses.controls.forEach((address) => { 
           address.get('lat').setValue(this.lat); 
           address.get('lon').setValue(this.lon); 
          }), 
      (error) => console.log('ERROR: ' + error) 
    ); 
} 

Hoffnung habe ich Sie richtig und diese Antwort ist hilfreich für dich.

+0

Das Problem ist, dass ich diese Werte nach dem Server-Antwort-Update versuchen und solche Art von FormGroup können mehrere sein (dynamische Hinzufügen/Entfernen Felder). Der wichtigste Punkt, um aktuelle FormGroup-Steuerelement zu bekommen –

+0

Kann ich nicht Loch-Array, nur aktuelle FormGroup bekommen? –

+1

https://angular.io/api/forms/FormArray Sie können mit 'at' und Index –

Verwandte Themen