Angular2: атрибуты ng-содержимого, передаваемые дочернему компоненту
Возможно ли что-то подобное?
Я хочу передать переменную "hasfocus" из cjc-box через атрибуты ng-content компоненту cjc-input.
app.component.html
<div cjc-box><div cjc-input></div></div>
CIC-box.component.html
<div class="cjc-box">
<div><ng-content hasfocus="focus"></ng-content></div>
</div>
CIC-input.component.html
<input class="cjc-input" type="text" focus="{{hasfocus}}" />
Это вообще возможно с проекциями в ng2?
1 ответ
Решение
Можно передать переменную в проектируемое содержимое (при условии, что компонент cjc-box
объявляет собственность focus
и компонент cjc-input
объявляет собственность hasfocus
):
<div cjc-box #box><div cjc-input [hasfocus]="box.focus"></div></div>
Это односторонняя привязка, если вы хотите двустороннюю, она немного сложнее:
- добавлять
@Input()
декоратор дляfocus
свойство компонента box. - добавлять
@Input()
декоратор дляhasfocus
свойство входного компонента - добавлять
@Output() hasfocusChange:EventEmitter<any> = new EventEmitter<any>();
для ввода компонента. - добавлять
this.hasfocusChange.emit(this.hasfocus);
послеhasfocus
изменить в вашем компоненте ввода. - Изменить шаблон на
<div cjc-box #box><div cjc-input [(hasfocus)]="box.focus"></div></div>