передача ng-шаблона от родительского к дочернему

#angular #angular8 #angular9 #angular10 #ng-template

#angular #angular8 #angular9 #angular10 #ng-шаблон

Вопрос:

Привет, сообщество Angular,

Я хочу передать ng-шаблон от родительского к дочернему компоненту, как в примере ниже :

#app.component:

     <app-parent>
        <ng-template #itemTemplate let-item>
              <div class="myClass">{{ item.name }}</div>
        </ng-template>
    </app-parent>
  

РОДИТЕЛЬСКИЙ:

TS:

 item: Item;
@ContentChild('itemTemplate', { static: false }) itemTemplateRef: TemplateRef<any>;
  

ШАБЛОН:

 <ng-container [ngTemplateOutlet]="itemTemplateRef" [ngTemplateOutletContext]="{$implicit: item}"></ng-container>
  

До сих пор все в порядке, ng-template правильно вводится в родительский компонент, но что, если мы хотим не использовать его в родительском компоненте, а ввести его в его дочерний компонент, чтобы родительский компонент стал таким :

НОВЫЙ РОДИТЕЛЬСКИЙ:

TS:

 item: Item;
@ContentChild('itemTemplate', { static: false }) itemTemplateRef: TemplateRef<any>;
  

ШАБЛОН:

 <child>
    <ng-container [ngTemplateOutlet]="itemTemplateRef" [ngTemplateOutletContext]="{$implicit: item}"></ng-container>
</child>
  

Таким образом, дочерний элемент будет идентичен старому родительскому элементу:

ДОЧЕРНИЙ:

TS:

 item: Item;
@ContentChild('itemTemplate', { static: false }) itemTemplateRef: TemplateRef<any>;
  

ШАБЛОН:

 <ng-container [ngTemplateOutlet]="itemTemplateRef" [ngTemplateOutletContext]="{$implicit: item}"></ng-container>
  

Так что это не работает, я хочу только настроить РОДИТЕЛЬСКИЙ элемент для правильной передачи <ng-template #ItemTemplate> ДОЧЕРНЕМУ элементу