2016-09-25 164 views
1

我的表單上發生了一件奇怪的事情,或者我的行爲不正確,請讓我通過展示我的代碼向您解釋。在第三個屬性級別中的Angular2 ngModel綁定未定義

我定義我的組件

form = {}; 

有與數據每行一個按鈕內部表單對象,當你點擊它會打開一個模式寡婦,也通過該項目作爲參數。

<a class="btn btn-warning" (click)="open(item)"><i class="glyphicon glyphicon-pencil"></i></a> 

這是火災和打開一個模式窗口,而且分配的項目對象以形成上述目的的方法:通過打印出來這樣

open = (item: any) => { 
    this.inventoryEditModal.open(); //Opens a modal window 

    this.form = item; // the assignment 
} 

Item對象是可在圖:

{{ form | json }} // i can see all item properties 

模態窗口包含一個表單,用戶將編輯的項目,所以基本上輸入表單字段應該得到裝滿物品的屬性值,但由於某種原因,第三水平是不確定的,我不明白爲什麼,讓我告訴你的第二個層次的截圖

<input type="text" class="form-control" [(ngModel)]="form.alarmSystem" name="wireless"> 

enter image description here

第三層次得到未定義:

<input type="text" class="form-control" [(ngModel)]="form.alarmSystem.wireless" name="wireless"> 

enter image description here

此問題僅在第三級「object.object.property」中發生。我只顯示一個輸入字段,但表單中包含8個以上的字段,它們都有相同的問題。

不知道我在這裏錯過了什麼,但從邏輯上說它應該工作。你有沒有看到這個問題在這裏或那裏發生或經歷過你自己?

預先感謝您。

+0

事實上,第二級是未定義「不能讀取屬性的未定義「無線」 = alarmSystem是未定義的。你是否也嘗試過'console.log(form.alarmSystem)'? – Supamiu

+0

是的,我已經嘗試過了,所以基本上整個對象在視圖中都可用,當我打印出來和alarmSystem時也是如此。 – itismelito

回答

2

我不確定它是否有助於您的情況,但我處於非常相似的情況。

什麼幫助我使用「安全導航運營商」。

我認爲你需要做的只是添加形式

<input type="text" class="form-control" [(ngModel)]="form?.alarmSystem.wireless" name="wireless"> 

該文檔可以在這裏找到:https://angular.io/docs/ts/latest/guide/template-syntax.html#!#safe-navigation-operator

+0

僅供參考,供將來參考...安全導航運算符不能與雙向綁定中的ngModel一起使用。 – DeborahK

+0

此修復程序不起作用。 –

+0

如何在角度5中使用它 –

相關問題