css 如何隐藏嵌套选项卡组的mat-tab-header,隐藏外部mat-tab-group而不隐藏内部mat-tab-group

a64a0gku  于 2023-03-09  发布在  其他
关注(0)|答案(4)|浏览(160)

我基本上有html

<mat-tab-group>
    <mat-tab>
        <mat-tab-group>
            <mat-tab>
            </mat-tab>
        </mat-tab-group>
    </mat-tab>
</mat-tab-group>

我怎样才能使用css(或者其他方法)来隐藏外部标签组mat-tab-header元素,而不影响内部标签标题?

vyswwuz2

vyswwuz21#

我强烈建议您使用这个自定义指令,而不是使用css。

import { Directive, ElementRef, OnInit } from "@angular/core";

@Directive({
  selector: "[header-less-tabs]",
})
export class HeaderLessTabsDirective implements OnInit {
  constructor(private eleRef: ElementRef) {}

  ngOnInit(): void {
    this.eleRef.nativeElement.children[0].style.display = "none";
  }
}

这是非常简单和可重用的。用法示例:

<mat-tab-group header-less-tabs>
    <mat-tab>
        <mat-tab-group>
            <mat-tab>
            </mat-tab>
        </mat-tab-group>
    </mat-tab>
</mat-tab-group>
vaj7vani

vaj7vani2#

想明白了,只要选择直系子女

<mat-tab-group class="invisible-tabs">
    <mat-tab>
        <mat-tab-group>
            <mat-tab>
            </mat-tab>
        </mat-tab-group>
    </mat-tab>
</mat-tab-group>

.invisible-tabs {
  > .mat-tab-header {
    display: none;
  }
}
7vux5j2d

7vux5j2d3#

简单的替代解决方案:
将以下内容添加到组件css文件中:

::ng-deep .mat-tab-header {
display: none!important;
}
cbjzeqam

cbjzeqam4#

使用ng:deep的另一种替代解决方案

<mat-tab-group >
            <mat-tab class="invisible-tabs">
                    </mat-tab>
        
                    <mat-tab class="invisible-tabs">
                    </mat-tab>
        </mat-tab-group>

    <!-- in css file -->
    .invisible-tabs {
          ::ng-deep .mat-tab-header {
            display: none !important;
          }
        }

相关问题