I want to get which tab is active. I tried to use a @ViewChild
decorator and accessing the element properties that way, but it returns null
.
Component:
import {Component, OnInit, ViewChild} from '@angular/core'; @Component({ selector: 'material-app', template: ` <md-tab-group #tabGroup> <md-tab label="Tab 1">Content 1</md-tab> <md-tab label="Tab 2">Content 2</md-tab> </md-tab-group> ` }) export class AppComponent implements OnInit { @ViewChild('tabGroup') tabGroup; constructor() { } ngOnInit() { console.log(this.tabGroup); // MdTabGroup Object console.log(this.tabGroup.selectedIndex); // null } }
Plunker Preview
Adding Angular 11 Tab You can add the Angular 11 Tab component by using `ejs-tab` directive and the attributes used within this tag allows you to define other tab functionalities. Import the TabModule into app. module. ts file from the ej2-angular-navigations package.
The mat-tab-nav-bar is the selector of MatTabNav directive. The mat-tab-link is the selector of MatTabLink directive. mat-tab-nav-bar: It is used for anchored navigation with animated ink bar. It has the properties such as 'backgroundColor', 'color', 'disablePagination', 'disableRipple'.
You have to hide a specific div that gets an id depending on the quantity of tabs. That is why your hide-directive on the <mat-tab> directive does not work. You have to write a directive that targets these elements using the classes as selector.
Well, I'm not sure if I understood well your question because, by default the index always starts counting from zero unless you set manually the [selectedIndex] property
.
Anyway, if you really want to see which tab is selected on initialization you could implement the AfterViewInit
interface and do the following:
export class AppComponent implements AfterViewInit, OnInit { ... ngAfterViewInit() { console.log('afterViewInit => ', this.tabGroup.selectedIndex); } }
On other hand, if you want to check which tab is selected based on changes (what makes more sense), here you go:
HTML:
<mat-tab-group #tabGroup (selectedTabChange)="tabChanged($event)"> <mat-tab label="Tab 1">Content 1</mat-tab> <mat-tab label="Tab 2">Content 2</mat-tab> </mat-tab-group>
Component:
tabChanged(tabChangeEvent: MatTabChangeEvent): void { console.log('tabChangeEvent => ', tabChangeEvent); console.log('index => ', tabChangeEvent.index); }
DEMO
According to Material documentation Angular Material tabs output an event on tab change @Output() selectedTabChange: EventEmitter<MatTabChangeEvent>
Your Template:
<mat-tab-group (selectedTabChange)="tabChanged($event)"> <mat-tab> <ng-template mat-tab-label>Tab 1</ng-template> Tab Content </mat-tab> <mat-tab> <ng-template mat-tab-label>Tab 2</ng-template> Tab Content </mat-tab> </mat-tab-group>
Your Typescript:
import { MatTabChangeEvent } from '@angular/material'; public tabChanged(tabChangeEvent: MatTabChangeEvent): void { console.log(tabChangeEvent); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With