【发布时间】:2018-04-11 07:42:42
【问题描述】:
我想从 QueryList 中由ContentChildren 填充的一个元素呈现内容。
假设我想构建标签组件,这是我使用此类组件的模板:
<my-tabs>
<my-tab title="title1">some content 1<my-tab>
<my-tab title="title2">some content 2<my-tab>
</my-tabs>
我当前的标签组件html:
<div class="header">
<ul>
<li> *ngFor="let tab of tabs, let i = index; let isLast = last">...<li>
</ul>
</div>
<!-- Missing !!! -->
代码:
@ContentChildren(MyTabComponent) public tabs: QueryList<MyTabComponent>;
我的问题是如何只呈现活动标签? (<!-- Missing !!! -->)
我试过了:
<ng-container [ngComponentOutlet]="tabs.toArray()[currentIndex].content"></ng-container>
<ng-container [ngTemplatetOutlet]="tabs.toArray()[currentIndex].content"></ng-container>
<ng-container [ngComponentOutlet]="tabs.toArray()[currentIndex]"></ng-container>
<ng-container [ngTemplatetOutlet]="tabs.toArray()[currentIndex]"></ng-container>
但标签内容永远不会呈现。 my-tab组件html就是:
<div>body</div>
<ng-template><ng-content></ng-content></ng-template>
目前。
我在网上查看其他人是如何解决这个问题的,但每个人都只使用<ng-content></ng-content>,然后隐藏了不活动的标签。
但我认为最好只渲染需要的内容(更好的性能)。
我还找到了this 代码,其中使用了<ng-container [ngTemplateOutlet]="step.content"></ng-container>,但我尝试了这种方法,它没有渲染任何东西。
已编辑:
我也准备stackblitz。
【问题讨论】:
-
你能创建一个堆栈闪电战吗?
-
@AnshumanJaiswal 好主意和done。不知道我自己怎么想不到。