Так что, возможно, я пропустил что-то очевидное в документах, но я просто ищу простой способ найти вкладку, выбранную в следующем сценарии:
View
<mat-tab-group (selectedTabChange)="onTabChange($event)">
<mat-tab *ngIf="true" label="Label1">Content 1</mat-tab>
<mat-tab *ngIf="false" label="Label2">Content 2</mat-tab>
<mat-tab *ngIf="true" label="Label3">Content 3</mat-tab>
</mat-tab-group>
Очевидно, что условия являются динамическими в моем реальном коде. Это только для образца.
Сценарий
onTabChange(event: MatTabChangeEvent) {
// ?
}
Выпуск
В приведенном выше сценарии event.index
вернет 0, если я нажму первую вкладку, и 1, если я нажму третью вкладку , потому что вторая не отображается из-за *ngIf
.
Для меня это имеет смысл, однако очень трудно узнать , на какой вкладке фактически нажимали в зависимости от того, какие из них были показаны для начала.
Я мог бы либо:
- повторите тест для каждого состояния вкладки в
onTabChange
, чтобы определить, какой индекс соответствует какой вкладке,
- (вероятно) привязывает ссылку
ViewChild(ren)
к чему-либо и извлекает данные (например, атрибуты data-
) через их собственные элементы DOM.
Обе эти опции кажутся слишком излишними.
Вопрос
В вышеприведенном коде, какой будет правильный способ узнать, что, скажем, была нажата вкладка, помеченная Label3
, без проверки самой метки (что, очевидно, было бы ужасно)?
Простой Stackblitz , если это может помочь.