2016-06-19 4 views
3

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?

Antwort

1

ma.selectedItemType müssen sich auf einen Artikel myItemType beziehen. Es muss auf dieselbe Instanz verweisen, eine andere Instanz mit gleichem Inhalt wird nicht funktionieren.

+0

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

+0

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)' –

Verwandte Themen