PrimeNG - 如何在p-tabView组件中动态添加和删除p-tabPanel

时间:2016-09-08 09:16:01

标签: jquery html angular typescript primeng

我正在进行一个需要使用p-tabView的项目。单击p-tabView中的按钮时,将创建一个新的p-tabPanel。

如何将新面板动态添加到p-tabView?

3 个答案:

答案 0 :(得分:5)

我找到了办法。我正在使用ngFor来控制tabPanel的#。

我的component.ts代码将操纵myModel.leads。因此,tabPanel的数量将相应地改变。

<!--Lead-->
<p-tabView  >  
  <p-tabPanel [selected]="i==0" *ngFor="let lead of procedureDetail.leads; let i = index" header="lead {{i+1}}"  >
           <div id="{{lead.id}}" class="my_dynamica_lead_tabPanel"> <!-- I can add content to this div with tabView.onChange() api -->
          {{lead.id}} - {{i}}
           </div>
           <div class="row">
              <div class="col-md-3">
                 Date:
              </div>
           <div class="col-md-9">
              <p-calendar [style]="{'width':'180px'}" [monthNavigator]="true" [yearNavigator]="true" yearRange="1900:2020" name="lead.{{i}}.date" [(ngModel)]="lead.date" [showIcon]="true" ></p-calendar> 
          </div>
       </div>

   </p-tabPanel>
</p-tabView> 

注意 - 如果在p-tabPanel中使用* ngFor时忘记包含[selected]属性。您将收到以下错误

TabPanel.html:2 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'none'. Current value: 'block'.

答案 1 :(得分:0)

我刚刚找到了解决这个问题的方法。制作TabPanel的对象类型列表。

tabs: TabPanel = [{header: 'tabbdfd', selected : false, disabled : false ,closable : true, closed : false}, {header: '3333', selected : false, disabled : false ,closable : true, closed : false}];

该组件如下所示:

<p-tabView>  
     <p-tabPanel *ngFor="#tab of tabs" [header]="tab.header" >
            <CONTENT>   
    </p-tabPanel>
</p-tabView> 

也许对某人有用:)

答案 2 :(得分:-1)

您可以按照以下步骤操作:

<ng-template pTemplate="header"> Header Text </ng-template>