<ng-template #list let-Items>
<ul>
<li *ngFor="let i of Items">
<ng-container [ngTemplateOutlet]="container" [ngTemplateOutletContext]="{$implicit: i}"></ng-container>
</li>
</ul>
</ng-template>
<ng-template #container let-list>
// some code
<ng-container [ngTemplateOutlet]="list" [ngTemplateOutletContext]="
{$implicit: list.columns}"></ng-container>
</ng-template>
我有一个包含另一个模板“ item”的模板“ container”。容器“ item”又包含“ container”
这不起作用,出现此错误:
错误TypeError:templateRef.createEmbeddedView不是函数
有什么想法吗?谢谢。
答案 0 :(得分:1)
这个问题已经很老了,所以您可能已经找到了答案,但是如果有人遇到这个问题。
您遇到的问题是容器模板中的变量列表(let-list)的命名发生冲突,该变量列表覆盖了列表模板。
例如,如果您将模板重命名为listTpl(或变量),则模板应正常工作:
<ng-template #listTpl let-Items>
<ul>
<li *ngFor="let i of Items">
<ng-container [ngTemplateOutlet]="container" [ngTemplateOutletContext]="{$implicit: i}"></ng-container>
</li>
</ul>
</ng-template>
<ng-template #container let-list>
// some code
<ng-container [ngTemplateOutlet]="listTpl" [ngTemplateOutletContext]="
{$implicit: list.columns}"></ng-container>
</ng-template>
答案 1 :(得分:0)
对于模板内部的递归,我们需要了解ng-template和templateOutlet如何在angular中一起工作。如果我们掌握了它,就可以轻松地进行递归。有关参考,请遵循以下代码。
./startFabric.sh java
已在Angular 8中进行了测试。未检查angular的早期版本。