Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 2如何为级别2的子级实现双向绑定?_Javascript_Angular_Angular Components - Fatal编程技术网

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。现在单击任一按钮都会更新所有三个绑定。我想你误解了这里的问题。问题不在于如何实现双向绑定(您的答案涵盖了双向绑定),而在于当您尝试通过两层嵌套组件实现双向绑定时会发生什么。我认为这个问题的作者是正确的,因为你必须分离出中间层模板中的输入和输出,以使这个方法一直正确传播。