我正面临一个奇怪的错误,它ng-content
包裹在一个ng-template
.
假设我有一个inner-component
显示在 a中的组件outer-component
:
<ng-container *ngIf="condition" [ngTemplateOutlet]="test"></ng-container>
<ng-template #test>
<inner-component></inner-component>
</ng-template>
如果condition=false
,则如预期的那样, myinner-component
永远不会由 Angular 创建(在调试时,ngOnInit()
永远不会调用)。
现在,如果我将外部组件设置为:
<ng-container *ngIf="condition" [ngTemplateOutlet]="test"></ng-container>
<ng-template #test>
<ng-content></ng-content>
</ng-template>
而且,我仍然condition=false
写着:
<outer-component>
<inner-component></inner-component>
</outer-component>
然后,令我惊讶的inner-component
是,即使它从未被渲染,它也会被创建。这对我来说是个问题,因为内部组件(我无法修改的第 3 方组件)确实需要在应用程序中呈现时创建。
你能想出一个我可以在外部组件上使用的解决方法来避免创建 ng-content,(同时显然仍然使用嵌入 - 第一个解决方案不是一个选项)。