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

Angular2: Pass by reference to interact between components

当我们将 model 传递给 child 组件并对其进行修改时,这些值仅反映在 child 组件的局部变量中,对 parent。我们可以通过引用将值从 parent 传递到 child 吗?所以更改也在那里可见。

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

原始值(stringnumboolean、对象引用)按值传递(复制),对象和数组按引用传递(两个组件都获得一个引用到同一个对象实例)。

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

A​​ngular2 变化检测不会检测数组或对象属性值的变化(绑定表达式处理它们时除外)。

实际上 - Angular 中有一个 "trick" 允许您将基本类型(如字符串或数字)传递给子组件并将这些更改发回数据被父组件引用。这是通过创建一个 "output EventEmitter" 来完成的,其名称与输入完全匹配 - 但后缀为 "Change"。我不确定是否在任何官方 Angular 文档中的任何地方记录了这一点 - 在粗略检查后我找不到它。

无论如何,我能找到的记录此技术的最佳堆栈溢出 post 是:

还有这个post - 但它没有具体讨论@Output EventEmitter 的命名要求:

而且我已确认此功能如描述的那样有效。

我不确定为什么 Angular 的 architects/designers 没有将此技术变成 "first class citizen",不需要您使用 obscure/arcane 命名约定(对于您的输出事件发射器)。