Ich habe den folgenden Code, den ich für die Bindung eines Objekts [] an eine Auswahlliste in Angular 2.0 (rc 1) verwende. Das Problem besteht darin, dass beim ersten Aufruf der Auswahlliste der entsprechende Wert/Index nicht vorab ausgewählt wird.bidirektionale Bindung zum Auswählen eines Elements in Angular 2 setzt kein ausgewähltes Element beim ersten Rendern
Im folgenden Codebeispiel ist "ma" die tatsächliche Klassenvariable der Komponente. ma hat eine SelectedItemType-Eigenschaft, die eines der Objekte aus dem myItemTypes-Objektarray ist.
<select class="form-control" [(ngModel)]="ma.SelectedItemType">
<option *ngFor='let item of myItemTypes'
[ngValue]='item'>{{item.Label}}
</option>
</select>
Ich habe versucht, mit den Tasten [ausgewählt]/[attr.selected] Attribut, aber es macht nicht Unterschied. Einige zusätzliche Informationen: Wenn anstelle des Objekts, wenn ich an die Type-Eigenschaft binden (ein String-Wert), um den folgenden Code (es funktioniert):
<select class="form-control" [(ngModel)]="ma.SelectedItemType.Type">
<option *ngFor='let item of myItemTypes'
[value]='item.Type'>{{item.Label}}
</option>
</select>
Aber ich würde wirklich in der Lage sein wollen die Zwei-Wege-Datenbindung mit dem Objekt zu haben. Kannst du etwas sehen, das mir hier fehlt?
Hallo. Danke, aber ich bin mir nicht sicher, wie ich es auf dieselbe Instanz verweisen lassen soll. Das Problem besteht darin, dass MyItemTypes eine separate Liste von MyItemType-Objekten ist, die ich verwende, um die Auswahlliste aufzufüllen. Und selectedItemType stammt von einem anderen @Input-Objekt. Sie sind vom selben "Typ", ABER ich bin mir nicht wirklich sicher, wie ich sie dazu bringen soll, auf dieselbe Instanz zu zeigen. – Chinmoymohanty85
Sie können die Instanz in 'myItemTypes' suchen, indem Sie die Elemente mit dem Wert aus Ihrer Eingabe vergleichen, wie' ma.seletectItemType'. 'm.SelecteItemType = myItemTypes.find (val => val.label === meinInput.label && val.xxx === val.xxx)' –