Javascript Angular 2如何为级别2的子级实现双向绑定?
对象是父组件的属性Javascript Angular 2如何为级别2的子级实现双向绑定?,javascript,angular,angular-components,Javascript,Angular,Angular Components,对象是父组件的属性 const public object={value1:'test1'} 它被用作子组件的属性 子组件本身有另一个子组件,该子组件将value1字段作为属性 问题是,我可以为第二个子项使用[(value)],还是设置从父项到第二个子项的双向绑定的唯一方法是不使用 其中,updateObjectFun将设置emit objectChange Output。如果子组件具有正确的“接口”,则可以使用双向绑定语法。因此,例如,如果第二个子组件的输入绑定为value,输出绑定为v
const public object={value1:'test1'}代码>
它被用作子组件的属性
子组件本身有另一个子组件,该子组件将value1
字段作为属性
问题是,我可以为第二个子项使用[(value)]
,还是设置从父项到第二个子项的双向绑定的唯一方法是不使用
其中,updateObjectFun
将设置emit objectChange Output。如果子组件具有正确的“接口”,则可以使用双向绑定语法。因此,例如,如果第二个子组件的输入绑定为value
,输出绑定为valueChange
,则可以使用双向绑定语法:[(value)]=“obj.value1”
双向绑定语法完全等同于:
[value]="obj.value1" (valueChange)="obj.value1=$event"
其中,$event
是从组件的valueChange输出属性发出的对象。如果您可以控制组件的接口(即,您可以创建任何您想要的属性),那么就可以随意利用双向绑定语法
ngModel
仅在您无法控制要绑定到的组件的接口,并且无法使用双向绑定语法快捷方式的情况下才有必要
(以上说法并不完全正确,因为ngModel在处理模板驱动表单时也有额外的用途,但对于您的用例来说,这并不重要)。您是否尝试过ngModel
?您应该使用[(ngModel)],而不是[(propertyName)]app child是appchild2的父级,对吗?然后app-child2应该向app-child发送哪个inturn将向父级发送。知道为什么这个示例不起作用吗?在上一个示例中,单击顶部按钮将更新所有三个按钮,但单击底部按钮仅更新其直接父按钮。在这个新示例中,我将层次结构更改为在顶部使用EventEmitter,在底部使用BehaviorSubject。现在单击任一按钮都会更新所有三个绑定。我想你误解了这里的问题。问题不在于如何实现双向绑定(您的答案涵盖了双向绑定),而在于当您尝试通过两层嵌套组件实现双向绑定时会发生什么。我认为这个问题的作者是正确的,因为你必须分离出中间层模板中的输入和输出,以使这个方法一直正确传播。