我在一个组件中使用ngb选项卡集,该组件位于一个div节下。这个div标记是根据一个为true的条件显示的。当条件为false时,将显示不同的部分。
<div *ngIf="showAllTabs">
<ngb-tabset>
<ngb-tab id="heading-1">
<ng-template ngbTabTitle>
<div>HEADING 1</div>
</ng-template>
</ngb-tab>
<ngb-tab id="heading-2">
<ng-template ngbTabTitle>
<div>HEADING 2</div>
</ng-template>
</ngb-tab>
</ngb-tabset>
</div>
<div *ngIf="!showAllTabs">
<!-- Some other work -->
</div>
问题是,例如,如果活动选项卡是";heading-2";,并且当分割标签被隐藏并再次显示时,活动标签被自动设置为第一标签(标题-1(。怎么不允许这样?
原因是结构指令">ngIf";。ngIf从DOM中删除元素,因此,当ngIf结果为true时,这些元素将被新呈现,这将导致默认选项卡可见。这可以通过将选项卡的id存储在变量中并在每次返回DOM元素时启用来编程选项卡选择来解决。