Как получить доступ к содержимому шаблона в ng-template, используя ссылочную переменную шаблона

Я хочу знать, можно ли получить доступ к компоненту шаблона в пределах ng-template, используя ссылочную переменную шаблона? Я пытался использовать @ViewChild и @ContentChild, но ни один из них не работает Пример: я хочу иметь доступ к содержимому app-common

<ng-template #first>
<app-common #second><app-common>
</ng-template>

@ViewChild('second') second1: ElementRef;
@ContentChild('second') second2: ElementRef;

ngAfterViewInit() {
  console.log(this.second1);
}

ngAfterContentInit() {
  console.log(this.second2);
}

person Arthur Decker    schedule 27.08.2018    source источник
comment
Можете ли вы показать, что вы пробовали с @ContentChild? Он должен работать с @ContentChild. Так что, возможно, вы сделали что-то не так   -  person PierBJX    schedule 28.08.2018
comment
@PierBJX Я только что добавил ContentChild, и ViewChild попробовал   -  person Arthur Decker    schedule 28.08.2018
comment
Вы проверяли дерево DOM, действительно ли компонент отрендерился или нет? Если его нет в дереве DOM, вы не сможете получить к нему доступ. Если он есть, то вы можете получить к нему доступ.   -  person Arjun Panicker    schedule 28.08.2018


Ответы (1)


<ng-template> — это элемент Angular для рендеринга HTML. Он никогда не отображается напрямую. На самом деле перед визуализацией представления Angular заменяет <ng-template> и его содержимое комментарием.

Источник

Как только вы используете шаблон где-то, например:

<ng-content *ngTemplateOutlet="first"></ng-content>

вы также сможете получить доступ к его содержимому через Viewchild.

person sevic    schedule 04.09.2018