В моем компоненте я получаю список шаблонов разметки с помощью ViewChildren:
@ViewChildren(TemplateRef) private _templates: QueryList<TemplateRef<unknown>>;
В Angular8 я не смог отфильтровать их по Id, поэтому мне нужно было искать внутреннее свойство - что было как-то немного странно:
let template = this._templates.find(t => (<any>t)._def.references[id]) : null;
Теперь, с Angular 9, это больше не работает. Я проверил объект и нашел новый «хак»:
this._templates.find(t => (<any>t)._declarationTContainer?.localNames?.includes(id)) : null;
Но есть ли какое-то новое или чистое решение для этого сценария?
Все еще надеемся на решение, которое работает без специальной директивы например MatTab, вероятно, тоже делает нечто подобное:
<mat-tab>
<ng-template mat-tab-label>
...
</ng-template>
<ng-template matTabContent>
...
</ng-template>
</mat-tab>