Angular2:ng传递给子组件的内容属性

Angular2:ng传递给子组件的内容属性,angular,parameter-passing,projection,Angular,Parameter Passing,Projection,这样的事情可能吗 我想通过ng内容属性将“hasfocus”变量从cjc框传递到cjc输入组件 app.component.html <div cjc-box><div cjc-input></div></div> <div class="cjc-box"> <div><ng-content hasfocus="focus"></ng-content></div> </div&

这样的事情可能吗

我想通过ng内容属性将“hasfocus”变量从cjc框传递到cjc输入组件

app.component.html

<div cjc-box><div cjc-input></div></div>
<div class="cjc-box">
  <div><ng-content hasfocus="focus"></ng-content></div>
</div>
<input class="cjc-input" type="text" focus="{{hasfocus}}" />

cic-box.component.html

<div cjc-box><div cjc-input></div></div>
<div class="cjc-box">
  <div><ng-content hasfocus="focus"></ng-content></div>
</div>
<input class="cjc-input" type="text" focus="{{hasfocus}}" />

cic-input.component.html

<div cjc-box><div cjc-input></div></div>
<div class="cjc-box">
  <div><ng-content hasfocus="focus"></ng-content></div>
</div>
<input class="cjc-input" type="text" focus="{{hasfocus}}" />


ng2中的投影也可以这样做吗?

可以将变量传递给投影内容(假设组件
cjc box
声明属性
focus
和组件
cjc input
声明属性
hasfocus
):


这是单向绑定,如果需要双向绑定,则稍微复杂一些:

  • @Input()
    decorator添加到box组件的
    focus
    属性中
  • @Input()
    装饰器添加到输入组件的
    hasfocus
    属性
  • 添加
    @Output()hasfocusChange:EventEmitter=neweventemitter()输入组件
  • 添加
    this.hasfocusChange.emit(this.hasfocus)在输入组件中更改后
    hasfocus
  • 将模板更改为

那很容易!非常感谢。现在我得到了cjc输入组件中hasfocus的值,太棒了!但是,当我更改cjc输入组件内的值时,它在父组件(cjc框)中不会更改。它看起来像是一个副本,而不是一个参考资料(您能解释一下为什么这是必要的:“将@Input()decorator添加到box组件的focus属性中。”