当我们将model
传递给子组件并对其进行修改时,这些值只反映在子组件的局部变量中,而不可用于父组件。我们可以通过引用将值从父级传递给子级吗。因此,这些变化也是显而易见的。
我已经在服务层使用observable
实现了相同的功能。但是我们不能通过@Input
进行引用吗?
基元值(string
、num
、boolean
,对象引用(通过值传递(复制(,对象和数组通过引用传递(两个组件都获得对同一对象实例的引用(。
只需将基本体值包裹在对象中,更改就会反映在两侧。
Angular2更改检测不会检测到对数组或对象属性中的值的更改(绑定表达式寻址时除外(。
实际上,Angular中有一个"技巧",允许您将基元类型(如字符串或数字(传递给子组件,并将这些更改发送回父组件引用的数据。这是通过创建一个"output EventEmitter"来完成的,其名称与输入完全匹配,但后缀为"Change"。我不确定这是否在任何官方的Angular文档中都有记录——经过粗略的检查,我没有找到它。
无论如何,我能找到的记录这种技术的最好的堆栈溢出帖子是这样的:https://stackoverflow.com/a/37855138/5692144
还有这篇文章,但它没有具体讨论@Output EventEmitter的命名要求:https://stackoverflow.com/a/43571004/5692144
我已经证实了这一点。
我不知道Angular的架构师/设计师为什么没有把这项技术打造成"一流的公民",不需要你使用模糊/晦涩的命名约定(用于你的Output EventEmitter(。