2016-08-05 67 views
0

我的目標是在組件A處於操作狀態時對組件B執行操作。當然組件A發出事件,這是組件B的輸入。它可以工作,但不是每個人都可以使用。Angular 2RC4 setter(或檢測到更改)

看那

http://plnkr.co/edit/A3cE4M

當用戶單擊從組件刪除甲一個元件被移除並且事件被髮射。在組件B中,我顯示了相同的列表(並且它有效)。而且在組件JaroFoo_counter中使用功能設置列表時應該增加。它僅在初始化和首次刪除後纔會增加。

我不知道爲什麼。每當_list改變時,我如何強制這個增量?

在此先感謝您的幫助。

+0

請閱讀的文章[如何創建一個最小的,完整的,並且可驗證的示例](http://stackoverflow.com/help/mcve)。 –

回答

0

這是預期的行爲。輸出多次發出相同的數組。只有第一次被識別爲已更改(從空到數組)。隨後,當再次發射相同的陣列時,更改檢測並不會影響它,因爲更改和更新不會發生,因此不會調用setter。

如果您在使用

this._list = this._list.slice(); 

然後每一個變化是公認的,因爲slice()創建一個新的數組實例每次修改後創建數組的一個副本。

Plunker example

+0

謝謝,你是對的。但是,我應該如何在不同的陣列操作或不同類型上使用setter。 我重建了代碼http://plnkr.co/edit/A3cE4M,現在是一樣的。對象propery是changind但不使用setter函數。我擔心這將與布爾或字符串/數字。 – jaroApp

+0

對象與數組相同,但對基本值(如字符串,數字,布爾值)的更改始終可識別。 –

+0

對象修改後應該如何檢測?或者在array.push之後。 'this_list = this_list'當然不起作用。 我不清楚。可能對於每個行動我都應該做其他事情。 – jaroApp