Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you get the selected tab from a bootstrap tabset in Angular4?

I have a set of tabs that I create dynamically, dependent on my input data. And what I want to do is to be able to figure out which tab is currently selected. In the example code below, I have a tab control and beneath all this, I have a button that when clicked will delete the selected tab. I've tried to keep this relatively simple and it might seem contrived, but I hope it does to illustrate what I mean.

Here's my code:

<div class="col-md-12">
  <ngb-tabset *ngIf="selectedInfo" type="groups" >
    <ngb-tab *ngFor="let tab of selectedInfo.groups" title={{tab.name}} >
        // some stuff in the tabs
    </ngb-tab>
  </ngb-tabset>
</div>

<div>
  <button class="btn btn-primary float-left" (click)="deleteTab()" > Delete Tab </button>
</div>


export class MyTabs implements OnInit {

  selectedIfno: MyInfoClass;

  ngOnInit(): void {

    // init data

  }

  deleteTab() {


  }

}

So let's say I want to delete the currently selected tab. How do I know what tab is currently selected?

like image 911
user2477533 Avatar asked Jan 24 '26 11:01

user2477533


1 Answers

I would suggest listening to the tabChange change event - this would allow you to "intercept" all the cases where the active page changes and store info about the currently selected tab. Here is the sketch of the idea:

<ngb-tabset [activeId]="activeTab" (tabChange)="activeTab = $event.nextId"> ... </ngb-tabset>

And a working plunker: http://plnkr.co/edit/4vRDHgWMhcvafXhQkxEO?p=preview

While typing the answer I've realized that keeping track of the active tab yourself might be a bit of pain and we could add this functionality to the tabset itself. Feel free to open a feature request at https://github.com/ng-bootstrap/ng-bootstrap/issues

like image 92
pkozlowski.opensource Avatar answered Jan 27 '26 02:01

pkozlowski.opensource



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!