ngbTabset无法通过编程方式更新标签页

时间:2018-12-17 09:25:57

标签: angular angular-bootstrap

我正在尝试通过ngbTabset.select()以编程方式激活标签页(默认未激活),但无法正常工作。

<ngb-tabset #ctdTabset="ngbTabset">
     <ngb-tab id="tab1">
       <ng-template ngbTabTitle>
         <div (click)="loadView('tab1')">
            <span>Tab 1</span>
         </div>
       </ng-template>
       <ng-template ngbTabContent>
         // tab 1 content here
       </ng-template>
   </ngb-tab>
   <ngb-tab id="tab2">
       <ng-template ngbTabTitle>
         <div (click)="loadView('tab2')">
            <span>Tab 2</span>
         </div>
       </ng-template>
       <ng-template ngbTabContent>
         // tab 2 content here
       </ng-template>
   </ngb-tab>
 </ngb-tabset> 

 // component.ts
 export class DashboardComponent implements OnInit {
   @ViewChild('ctdTabset') ctdTabset;

   ngOnInit() {
     this.switchNgBTab('tab2');
   }

   switchNgBTab(id: string) {

     this.ctdTabset.select(id);
   }
 }

它不是在更新tab2,可能是我做错了什么。请,有人可以帮我吗。您的好意将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

使用 ngAfterViewInit 。从ngAfterViewInit而不是switchNgBTab()调用ngOnInit()

 import {Component, ViewChild} from '@angular/core';

@Component({
  selector: 'ngbd-tabset-basic',
  templateUrl: './tabset-basic.html'
})
export class NgbdTabsetBasic { 

  @ViewChild('ctdTabset') ctdTabset;

  ngOnInit() {}

  ngAfterViewInit() {
    this.switchNgBTab('tab2');
  }

   switchNgBTab(id: string) {
     this.ctdTabset.select(id);
   }
}

stackBlitz链接:https://stackblitz.com/edit/angular-reywga-s9hh6v?file=app/tabset-basic.ts