如何使用子组件使用 Tabset 组件创建动态选项卡?
How to create dynamic tabs with Tabset component using a child component?
最近开始用Angular和ng-bootstrap开发。我正在 Reactive Forms 的帮助下处理一个表单,它包含一些 FormControls 和一个嵌套的 FormArray。对于 FormArray 中的每个元素,我想显示一个属于 ng-bootstrap 的 Tabset 组件的选项卡的子组件,但该子组件不呈现。
窗体分为两个组件:主窗体和子窗体。 MainForm 包含一些 FormControl、一个 FormArray、一个 Tabset 实例和 FormArray 中每个元素的 SubForm 实例。 SubForm 是 Tabset 的一个选项卡,包含一些输入字段的嵌套表单。
当我呈现 MainForm 时,会触发 API 调用并 returns 一些数据来填充表单。 MainForm 的 FormControls 和 FormArray 已填充,但 SubForm 未呈现。
我使用 Stackblitz 在 link 中用最小配置重现了这个问题。
这里的问题是 NgbTabSet
组件无法初始化在 SubForm
中创建的 NgbTab
指令,因为 NgbTabSet
需要 NgbTab
ContentChildren
这意味着您必须将 ngb-tab
个元素保留在 ngb-tabset
中作为投影内容:
主-form.component.html
<ngb-tabset type="pills" [destroyOnHide]="true">
<ngb-tab *ngFor="let hobbie of hobbies.controls; let i=index" [attr.id]="index">
<ng-template ngbTabTitle>
<span>Hobbie {{ i + 1 }}</span>
</ng-template>
<ng-template ngbTabContent>
<app-sub-form [subForm]="hobbie"></app-sub-form>
</ng-template>
</ngb-tab>
</ngb-tabset>
我还认为它会强制您保持 SubForm 组件不依赖于 NgbTabSet,以便您可以在其他地方使用此表单。
最近开始用Angular和ng-bootstrap开发。我正在 Reactive Forms 的帮助下处理一个表单,它包含一些 FormControls 和一个嵌套的 FormArray。对于 FormArray 中的每个元素,我想显示一个属于 ng-bootstrap 的 Tabset 组件的选项卡的子组件,但该子组件不呈现。
窗体分为两个组件:主窗体和子窗体。 MainForm 包含一些 FormControl、一个 FormArray、一个 Tabset 实例和 FormArray 中每个元素的 SubForm 实例。 SubForm 是 Tabset 的一个选项卡,包含一些输入字段的嵌套表单。
当我呈现 MainForm 时,会触发 API 调用并 returns 一些数据来填充表单。 MainForm 的 FormControls 和 FormArray 已填充,但 SubForm 未呈现。
我使用 Stackblitz 在 link 中用最小配置重现了这个问题。
这里的问题是 NgbTabSet
组件无法初始化在 SubForm
中创建的 NgbTab
指令,因为 NgbTabSet
需要 NgbTab
ContentChildren
这意味着您必须将 ngb-tab
个元素保留在 ngb-tabset
中作为投影内容:
主-form.component.html
<ngb-tabset type="pills" [destroyOnHide]="true">
<ngb-tab *ngFor="let hobbie of hobbies.controls; let i=index" [attr.id]="index">
<ng-template ngbTabTitle>
<span>Hobbie {{ i + 1 }}</span>
</ng-template>
<ng-template ngbTabContent>
<app-sub-form [subForm]="hobbie"></app-sub-form>
</ng-template>
</ngb-tab>
</ngb-tabset>
我还认为它会强制您保持 SubForm 组件不依赖于 NgbTabSet,以便您可以在其他地方使用此表单。