Привязка компонента к свойствам и событиям в шаблоне, передаваемом из родительского элемента
Я хочу подключить привязку и прослушивать события, сгенерированные компонентами, встроенными в шаблон, переданный мне моим родительским компонентом. Я не хочу, чтобы родители связывали их для меня.
Некоторый контекст: я создаю компонент, который абстрагирует концепцию перетаскиваемого и редактируемого списка. Он должен работать со списками чего угодно, а не только со строками. Иногда я использую его для редактирования массивов строк, иногда я использую его для редактирования списков объектов.
Чтобы сделать его способным обрабатывать или / или, я создал подкомпоненты, которые пользователь компонента использует для управления рендерингом каждого элемента списка. В итоге это выглядит так (упрощенно для иллюстрации):
<list-editor [list]="theList">
<ng-template><value/></ng-template>
</list-editor>
Или для редактирования объекта:
<list-editor [list]="theObjects">
<ng-template><field name="foo"/><field name="bar"/></field>
</list-editor>
Требуется больше разметки, но вы поймете.
Хитрость в том, что для выполнения этой работы требуется внутренняя уборка. Вещи перешли в list-editor
нужно пройти в field
а также value
компоненты. Когда они испускают (change)
событие, list-editor
должен знать об этом, и передать это. Моя цель состоит в том, чтобы избежать возложения ответственности за все эти "подключения" на родительский компонент и позаботиться об этом во внутренних list-editor
,
В list-editor
у меня есть TemplateRef
к <ng-template>
тег. Я хотел бы внедрить необходимые привязки свойств и прослушиватели событий в любой field
или же value
теги внутри него. Это вообще возможно? И если так, как это делается?