Ich möchte ein ausgewähltes Element an eine Liste von Objekten binden - was einfach genug ist:
@Component({
selector: 'myApp',
template: `<h1>My Application</h1>
<select [(ngModel)]="selectedValue">
<option *ngFor="#c of countries" value="c.id">{{c.name}}</option>
</select>`
})
export class AppComponent{
countries = [
{id: 1, name: "United States"},
{id: 2, name: "Australia"}
{id: 3, name: "Canada"},
{id: 4, name: "Brazil"},
{id: 5, name: "England"}
];
selectedValue = null;
}
In diesem Fall scheint es selectedValue
sich um eine Zahl zu handeln - die ID des ausgewählten Elements.
Ich möchte jedoch tatsächlich an das Länderobjekt selbst binden, sodass dies selectedValue
eher das Objekt als nur die ID ist. Ich habe versucht, den Wert der Option folgendermaßen zu ändern:
<option *ngFor="#c of countries" value="c">{{c.name}}</option>
aber das scheint nicht zu funktionieren. Es scheint ein Objekt in meinem zu platzieren selectedValue
- aber nicht das Objekt, das ich erwarte. Sie können dies in meinem Plunker-Beispiel sehen .
Ich habe auch versucht, eine Bindung an das Änderungsereignis herzustellen, damit ich das Objekt basierend auf der ausgewählten ID selbst festlegen kann. Es scheint jedoch, dass das Änderungsereignis ausgelöst wird, bevor das gebundene ngModel aktualisiert wird. Dies bedeutet, dass ich zu diesem Zeitpunkt keinen Zugriff auf den neu ausgewählten Wert habe.
Gibt es eine saubere Möglichkeit, ein ausgewähltes Element mit Angular 2 an ein Objekt zu binden?