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
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. –
@RohanFating Ich habe den ursprünglichen Beitrag für weitere Informationen bearbeitet. Vielen Dank – HCL02