Angular2:通过引用传递组件之间的交互

时间:2016-10-26 10:43:53

标签: angular angular2-components

当我们将model传递给子组件并对其进行修改时,这些值只会反映在子组件的局部变量中,而不能用于父组件。我们可以通过引用从父到子传递值。所以这些变化也是可见的。

我在服务层使用observable实现了相同的功能。但我们不能通过@Input传递参考资料吗?

2 个答案:

答案 0 :(得分:34)

原始值(stringnumboolean,对象引用)通过值传递(复制),对象和数组通过引用传递(两个组件都获取对引用的引用)相同的对象实例)。

只需将原始值包装在对象中,更改将反映在两侧。

Angular2更改检测未检测到数组或对象属性中值的更改(绑定表达式解决它们时除外)。

答案 1 :(得分:0)

实际上-Angular中有一个“技巧”,可让您将基本类型(如字符串或数字)传递给子组件,并将这些更改发送回父组件引用的数据。这是通过创建一个名称与输入完全匹配的“输出EventEmitter”来完成的,但后缀为“ Change”。我不确定这是否在任何正式的Angular文档中都有记录-经过粗略的检查后我找不到它。

无论如何,记录我能够找到的这项技术的最佳堆栈溢出文章是这样的: https://stackoverflow.com/a/37855138/5692144

也有这篇文章-但它没有专门讨论@Output EventEmitter的命名要求: https://stackoverflow.com/a/43571004/5692144

而且我已经确认该功能可以按照说明进行操作。

我不确定为什么Angular的建筑师/设计师没有将这种技术称为“头等公民”,不需要您使用它来混淆/混淆命名约定(针对您的Output EventEmitter)。