2017-09-02 1 views
0

Ich habe versucht, das folgende Objekt in meine Form zu binden, aber ohne Erfolg ... Mein Code ist wie folgt:Bindung Map <string, Array <Object>> bilden

export class User { 
     public Name: string; 
     public Surname: string; 
     public Addresses: Map<string, Array<Location>>; 
    . 
    . 
    . 
    } 

Notiere die Adressen , wo der Schlüssel ist das Land und der Wert ist ein Array von Location-Objekten ...

Jetzt in meiner Komponente habe ich etwas wie folgt, wo nach dem Laden der Daten aus der db, das Update-Formular aufgerufen wird, um durchzuführen :

UpdateForm:

updateForm() { 
     this.userForm.patchValue({ 
      Name: this.user.Name, 
      Surname: this.user.Surname, 
      Addresses: this.user.Addresses 
     }); 

Schließlich mein html:

<form [formGroup]="userForm" (ngSubmit)="submit()" novalidate> 
    <div class="panel-body" >                          
     <div class="col-lg-4"> 
      <label>Code:</label> 
       <div class="form-group input-group"> 
        <input type="text" class="form-control" formControlName="Addresses['UK'].Code"> 
       </div> 
     </div> 
. 
. 
. 

Mein Problem ist, dass ich nicht die Daten aus dem angegebenen Index (UK), (oder jede andere Taste) lesen kann. Ich habe auch versucht mit Addresses.get ('UK') ... und Addresses.value ['UK'] ..... aber ohne Erfolg ... Auch versucht, ngModel zu verwenden, aber erneut fehlgeschlagen. Mein Verdacht liegt in dem Patch-Aufruf, bei dem ich denke, dass ich die Formularkontrolle nicht richtig setze. P. S. Benutzerdaten von db ist richtig, so liegt das Problem speziell in der 'verbindlich' Teil.

EDIT: Zusätzlich wenn ich einen Haltepunkt direkt nach dem patchValue() die Userform Adressen scheint gefüllt werden (von Debugger):

this.userForm.get('Addresses').value 

    UK: 
     Code: 123 
     EXT: a123 
     . 
     . 
     . 

Meine Antwort von der db GetUser () ist:

"Addresses": { 
     "CountryCode": { 
      "Code": 123, 
      "Ext": "a123", 
      . 
      . 
      . 

     }, 

Vielen Dank im Voraus

+0

Adressen ['UK']. Code dies ist nicht Ihre FormControl daher werden Sie keinen Wert von ihm erhalten, können Sie Ihre Adressen-Antwort teilen. Dann müssen wir für sie formControls dynamisch erstellen. –

+0

@RohanFating Ich habe den ursprünglichen Beitrag für weitere Informationen bearbeitet. Vielen Dank – HCL02

Antwort

0

Sie haben Ihre Steuer Namen innerhalb formGroup wie Adresse und die gleiche Kontrolle Sie bieten müssen definieren Sie Elemente bilden, wie ich unten

tat
<input type="text" class="form-control" formControlName="Addresses"> 

Sie haben Wert hier Ländercode Patch auf diese Weise explizit

this.userForm.patchValue({ 
     'Addresses': this.user.Addresses['UK'].Code 
    }); 
Verwandte Themen