2016-06-19 62 views
3

我有下面的代碼,我正在使用它將一個對象[]綁定到Angular 2.0(rc 1)的選擇列表中。 問題是,最初在呈現選擇列表時,它沒有預先選擇適當的值/索引。在Angular 2中選擇元素的雙向綁定不會在第一次渲染時設置選定元素

在下面的代碼示例中,「ma」是組件的實際類變量。 ma有一個SelectedItemType屬性,它是myItemTypes對象數組中的一個對象。

<select class="form-control" [(ngModel)]="ma.SelectedItemType"> 
     <option *ngFor='let item of myItemTypes' 
            [ngValue]='item'>{{item.Label}} 
     </option> 
    </select> 

我試過使用[selected]/[attr.selected]屬性,但它沒有區別。 一些額外的信息: 如果不是對象,如果我綁定使用下面的代碼類型屬性(字符串值)(正常工作):

<select class="form-control" [(ngModel)]="ma.SelectedItemType.Type"> 
      <option *ngFor='let item of myItemTypes' 
             [value]='item.Type'>{{item.Label}} 
      </option> 
</select> 

但是,我真的希望能夠與對象進行雙向數據綁定。你能看到我可能在這裏失蹤的東西嗎?

回答

1

ma.selectedItemType必須指代myItemType的項目。它必須指向同一個實例,即使具有相同內容的另一個實例也不起作用。

+0

嗨。謝謝,但我不確定如何讓它指向同一個實例。問題是myItemTypes是我用來填充選擇列表的myItemType對象的單獨列表。而selectedItemType來自另一個@Input對象。他們是相同的「類型」,但我不確定我應該如何讓他們指向同一個實例。 – Chinmoymohanty85

+0

你可以通過比較項目與你自己輸入的值,比如'ma.seletectItemType',在'myItemTypes'中查找實例。 'ma.SelecteItemType = myItemTypes.find(val => val.label === myInput.label && val.xxx === val.xxx)' –