0

我正在使用 Angular ng-tabset 来呈现一些选项卡。我的 ngb-tab 看起来有点像:

<ngb-tab id="mytabs">
    <ng-template ngbTabTitle>
        <div data-locator="xxxe">yyy</div>
    </ng-template>
    <ng-template ngbTabContent>
        ...
        ...
        ...
    </ng-template>
</ngb-tab>

效果很好。但是我在这个模板中还有几个其他选项卡,我希望在其中呈现相同的内容。因此,出于可重用性的目的,我试图将选项卡的内容分开移动,并在我希望呈现的每个选项卡中使用它的引用。我不知道该怎么做。我试着把它放在一个单独<ng-template>的里面:

<ng-template #testing>
    <ng-template ngbTabTitle>
        <div data-locator="xxxe">yyy</div>
    </ng-template>
    <ng-template ngbTabContent>
        ...
        ...
        ...
    </ng-template>
<ng-template

在我需要渲染的选项卡下,我尝试将其称为:

<ngb-tab id="mytabs">
    <ng-container *ngTemplateOutlet="testing"></ng-container>    // referring the #testing above
</ngb-tab>

OR:

<ngb-tab id="mytabs">
    <ng-template *ngTemplateOutlet="testing"></ng-template>
</ngb-tab>

但是我的标签没有呈现。也许是错误的方法,或者我遗漏了一些东西。是否有可能实现我想要实现的目标?如果是,如何?

4

2 回答 2

0

我建议不要嵌套 ng-templates 并将它们与不同的 id 一起使用,然后将它们分别插入到 ngb-tab 下,如下所示:

<ng-template ngbTabTitle #testTitle>
    <div data-locator="xxxe">yyy</div>
</ng-template>
<ng-template ngbTabContent #testContent>
    ...
    ...
    ...
</ng-template>
<ngb-tab id="mytabs">
    <ng-container *ngTemplateOutlet="testTitle"></ng-container>    
    <ng-container *ngTemplateOutlet="testContent"></ng-container>
</ngb-tab>
于 2020-05-28T17:35:03.730 回答
0

我希望我能正确理解你的问题。为了模板的可重用性,您可以创建自己的组件。为了逻辑的可重用性,您可以创建服务。

<ngb-tab id="mytabs">
    <ng-template ngbTabTitle>
        <my-xyz-comp data-locator="xxxe"></my-xyz-comp>
    </ng-template>
    <ng-template ngbTabContent>
        <my-xyz-comp data-locator="aaaa"></my-xyz-comp>
    </ng-template>
</ngb-tab>
于 2020-05-28T17:35:11.343 回答