Я нашел это решение, которое сработало для меня. Сначала HTML, вам понадобится директива, чтобы обернуть содержимое, чтобы вы могли ссылаться на него. Вам нужно будет использовать звездочку с директивой, чтобы ее можно было дублировать.
<custom-component>
<ng-container *customDirective>
<button (click)="doAThing();">A button</button>
</ng-container>
</custom-component>
Директива не требует дополнительного кода. Нам просто нужно это для справки.
В вашем пользовательском компоненте вам нужно создать ссылку на директиву через @ContentChild, например:
@ContentChild(CustomDirective, { read: TemplateRef }) transcludeTemplate;
Затем мы используем следующее для нашего HTML-кода пользовательского компонента, избегая использования вместе тегов ng-content
:
<ng-template *ngTemplateOutlet="transcludeTemplate"></ng-template>
<div class="second-area>
<ng-template *ngTemplateOutlet="transcludeTemplate"></ng-template>
</div>
Так что на самом деле это не то же самое, что дублирование <ng-content>
, но это дает нам аналогичную функцию. Очевидно, что ng-контент не умножается на предполагаемое поведение . Так что это может быть лучшим способом достижения аналогичной цели.