Я настраиваю ngTemplateOutlet внутри * ngFor как в следующем фрагменте кода
<ul>
<li *ngFor="let item of list">
<ng-container [ngTemplateOutlet]="item.type"></ng-container>
</li>
</ul>
Где list = [ {type: 'templateOne'}, {type: 'templateTwo'} ]
и я определил шаблоны, как показано ниже.
<ng-template #templateOne></ng-template>
<ng-template #templateTwo></ng-template>
Приведенный выше фрагмент шаблона выдает ошибку с указанным ниже сообщением
TypeError: templateRef.createEmbeddedView is not a function
at ViewContainerRef_.push../node_modules/@angular/core/fesm5/core.js.ViewContainerRef_.createEmbeddedView (core.js:21600)
at NgTemplateOutlet.push../node_modules/@angular/common/fesm5/common.js.NgTemplateOutlet.ngOnChanges (common.js:4026)
at checkAndUpdateDirectiveInline (core.js:22085)
Поскольку item.type
используется в ngTemplateOutlet
, имеет тип string, я подозреваю, что он не разрешается в переменную templateReference.
Как я могу преобразовать строку в экземпляр templateReference?
Демонстрация - См., Например, эту ссылку и проверьте консоль на наличие ошибки