Угловая вкладка удалить строку вкладки (.mat-чернильная панель) в фокусе

#javascript #css #angular #angular-material

Вопрос:

У меня есть компонент вкладки из угловых материалов, и я хотел бы применить специальное визуальное поведение, когда вкладка фокусируется (обычно с помощью вкладки).

В частности, я хотел бы удалить строку кнопки на вкладке, как на следующем изображении, когда вкладка находится в фокусе, и добавить ее, когда фокус выключен.

введите описание изображения здесь

Я понимаю, что класс css для удаления строки вкладки-это .mat-ink-bar, и он должен быть чем-то похожим на это.

 mat-tab-group {
    mat-ink-bar.mat-ink-bar {
        display: none;
    }
}
 

Я обнаруживаю событие фокусировки на CSS, используя этот css:

 .mat-tab-label {
    amp;:focus {
        background-color: transparent !important;
        color: red !important;
    }
}       
 

И, наконец, сгенерированный html из компонента angular materials (или, по крайней мере, важной части) является

 <mat-tab-group class="mat-tab-group mat-primary ng-star-inserted">

    <mat-tab-header class="mat-tab-header">
        <div class="mat-tab-label-container">
            <div class="mat-tab-list" role="tablist" style="transform: translateX(0px);">
                <div class="mat-tab-labels">
                    <div cdkmonitorelementfocus="" class="mat-tab-label mat-focus-indicator mat-ripple mat-tab-label-active">
                        <div class="mat-tab-label-content">General</div>
                    </div>
                </div>
                
                <mat-ink-bar class="mat-ink-bar" style="visibility: visible; left: 0px; width: 160px;"></mat-ink-bar>
            </div>
        </div>
    
    </mat-tab-header>

</mat-tab-group>    
 

Проблема в том, что я не нахожу способа связать оба класса, чтобы применить поведение (добавить/удалить панель с чернилами), поскольку оба div напрямую не связаны, и кажется, что поведение невозможно для него на CSS.

Я пытаюсь сделать это на угловой стороне, чтобы добавить класс css в div-панель с чернилами (и применить правильный стиль для этого нового класса css), но когда я добавил прослушиватель для определения фокуса, это событие не обнаружено для вкладки (оно запускается для других элементов ввода, но не для вкладки).

 @HostListener('focusin', ['$event'])
    public onFocus(event:any) {
        console.log(event);
    } 
 

Есть какое-нибудь решение?

Комментарии:

1. можете ли вы добавить Стекблитц, если это возможно?