2016-08-05 73 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