【发布时间】:2022-08-08 12:05:36
【问题描述】:
我正在 Angular 中构建一个 Header 组件,并希望根据输入 inputTwoRows 是否已设置为 true/false 在 DOM 结构中的不同位置显示导航。导航通过内容投影添加到 Header\ 的模板 - ng-content。我试图在模板中的不同位置将 2 ng-content 包装在 ng-templates 中,并添加 ngIf 以有条件地显示它们。然而,这些模板试图显示相同的投影内容。正如您将在演示问题的 Stackblitz 链接中看到的那样,如果 [twoRows]=\"true\" 在 c-header 上,则仅显示第一个 ng-content。以下是header.component.html 的代码:
<header>
<div>logo</div>
<ng-template [ngIf]=\"inputTwoRows\">
<p>Two Rows</p>
<ng-content select=\"c-header-nav\"></ng-content>
</ng-template>
<div>utils</div>
<ng-template [ngIf]=\"!inputTwoRows\">
<p>One Row</p>
<ng-content select=\"c-header-nav\"></ng-content>
</ng-template>
</header>
如果ng-template 中的内容不是ng-content,则此逻辑可以正常工作。有没有办法以某种方式实现我最初的目标?
https://stackblitz.com/edit/angular-ivy-xfr7hs?file=src/app/components/header/header.component.html
谢谢
詹姆士
标签: angular angular-content-projection