#angular #angular-components #angular-template #ng-template #ng-content
Вопрос:
Я пытаюсь спроецировать данные на несколько ng-содержимого, но через ng-шаблон. что-то вроде этого:
дочерний компонент.ts
<ng-content select="[first]"></ng-content>
<h3>seperator</h3>
<ng-content select="[second]"></ng-content>
приложение.компонент.ts
<child>
<ng-container [ngTemplateOutlet]="template"></ng-container>
</child>
<ng-template #template>
<h3 first> First </h3>
<h3 second> Second </h3>
</ng-template>
Проблема в том, что это не работает.
Если я не использую атрибут «выбрать», он работает, но не размещает дивы в нужных местах.
Я пробовал использовать ContentChildren
и добавлять TemplateRef
вручную в дочерний компонент, но он все равно не будет отображать divs в нужных местах.
Пример Стекблитца: https://stackblitz.com/edit/angular-vdqmkl?file=src/app/child.component.ts
Комментарии:
1. По какой причине у вас не может быть двух шаблонов? Один для»первого», а другой для «второго»? Затем сделайте что-нибудь вроде:
<child> <ng-container first [ngTemplateOutlet]="firstTemplate"></ng-container> </child>
2. Этот шаблон действует как «общий» для многих детей, каждый из которых размещает селекторы в разных местах. Я предпочитаю иметь один шаблон, вводить его всем разным дочерним элементам и позволять каждому из них задавать стили и расположение введенного содержимого.