Ich habe eine Auswahlliste, die ich auf einen gespeicherten Wert initialisieren möchte, der vom Server zurückgegeben wird. Aber was auch immer ich versuche, ich kann nicht den ausgewählten Wert verwenden.So legen Sie den Anfangswert von Angular 2 fest Wählen Sie
Ich verwende Angular 2.2.0 und Reaktive Formen.
Hier ist eine Liste von Werten für die Auswahlliste.
private categoryList: ICategory[] = [
new Category({ id: 1, name: 'Cat 1' }),
new Category({ id: 2, name: 'Cat 2' }),
new Category({ id: 3, name: 'cat 3' })
];
Der gespeicherte Wert ist:
{ id: 1, name: 'Cat 1' }
Mit Formbuilder Ich schaffe das Formular
this.itemForm = this.fb.group({
name: [null, Validators.required],
description: [null, Validators.required],
weight: [null, Validators.required],
dimensions: [null, Validators.required],
category: [null, Validators.required]
});
ich initialisieren es dann mit den gespeicherten Daten
(<FormGroup>this.itemForm)
.setValue({
name: item.name,
description: item.description,
weight: item.weight,
dimensions: item.dimensions,
category: item.category
}, { onlySelf: true });
Die Vorlage sieht wie folgt aus
<select name="category" [formControl]="itemForm.controls['category']">
<option [selected]="itemForm.controls['category'].value == null" value="">-- Select --</option>
<option *ngFor="let cat of categories" [ngValue]="cat">
{{cat.name}}
</option>
</select>
{{itemForm.controls['category'].value | json }}
Erwartetes Ergebnis Der Name Element ein in der Auswahl ausgewählt und entspricht der Text in der JSON unter Vorlage angezeigt
Aktuelles Verhalten Der JSON zeigt dies:
{ "id": 1, "name": "Cat 1" }
Aber nichts ist in der Auswahl
ausgewählt Wenn --Auswahl-- das JSON-Updates korrekt „“ gewählt wird.
Wenn eine andere Katze ausgewählt wird, wird der JSON ebenfalls korrekt aktualisiert.
Was mache ich falsch, wie initialisiert die Auswahl?
EDIT Ich habe auch versucht dies:
<option *ngFor="let cat of categories" [selected]="itemForm.controls['category'].value.id == cat.id" [ngValue]="cat">
Ich weiß nicht, ob Sie tatsächlich eine Benachrichtigung für meine Antwort bekommen, da ich es gelöscht und es gelöscht habe. Wenn nicht, dann schauen Sie unten nach einer Antwort, die Ihnen hoffentlich hilft! :) – Alex