2017-06-08 49 views
0

請相關plunker加入活性形式陣角的開始

https://plnkr.co/edit/f0BxpinhuqVz8o6IIFaL?p=preview

// stack overflow makes you put code if a plunker is linked but it is too much code to copy paste here it would just look messy so I a am putting this comment instead. 

如果你運行這個,然後單擊添加按鈕一個新條目添加到陣列中,但表單視圖並不反映表單狀態,而是第一個條目被重複,最後一個條目不見了。

如果任何人有任何想法或指南,我在做什麼錯我會非常感激,因爲我一直堅持一個看似簡單的任務。

我試圖按照官方的Angular Reactive Forms指南儘可能接近地構建這個例子。

感謝

+3

* 「實在是太多了代碼複製粘貼此」 * - 然後刪減直到[mcve],這是在這裏提問的工作的一部分。 – jonrsharpe

+0

它真的需要這麼多的代碼,它的Angular在這裏討論的最小示例haha –

+0

你閱讀過文檔嗎?有'insert'方法可以指定'index'。 – developer033

回答

4

好像角有麻煩跟蹤你的對象的指數在formArray。這可以通過使用trackBy來解決。它的功能添加到您的迭代:

<div *ngFor="let detail of detailArray.controls; let i=index; trackBy:trackByFn" [formGroupName]="i"> 

和組件:

trackByFn(index: any, item: any) { 
    return index; 
} 

PLUNKER

+0

謝謝你解決了這個問題,我不知道關於賽道通過 –

+0

不客氣,很高興我能幫到你! :)是的,當我們處理原始類型時,trackBy通常(僅)需要,但這不是。但顯然Angular在將數值插入到數組的開頭而不是僅僅在數組末尾插入一個新的值(沒有trackBy的情況下工作)時,很難保持索引的軌跡。這實際上很有趣:) – Alex