You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5如何在mat-tab-group头部添加搜索栏等非标签元素?

在Angular 5的mat-tab-group标题栏添加搜索栏的实现方案

当然可以!在Angular 5的mat-tab-group组件中,完全能在标签标题栏里渲染搜索栏、图片这类非标签元素,下面分享两种实用的实现方式:

方法一:自定义mat-tab-header模板(推荐)

Angular Material的mat-tab-group支持通过<ng-template matTabHeader>来自定义整个标题栏内容,这样你可以自由组合标签和其他元素。

模板代码示例

<mat-tab-group>
  <!-- 自定义标题栏 -->
  <ng-template matTabHeader>
    <div class="custom-tab-header">
      <!-- 保留原有的标签导航 -->
      <mat-tab-header-items>
        <mat-tab-header-item *ngFor="let tab of tabGroup._tabs" [active]="tab.isActive">
          {{ tab.textLabel }}
        </mat-tab-header-item>
      </mat-tab-header-items>
      <!-- 添加搜索栏 -->
      <div class="search-container">
        <mat-form-field appearance="outline">
          <input matInput placeholder="搜索标签..." [(ngModel)]="searchQuery">
        </mat-form-field>
      </div>
    </div>
  </ng-template>

  <!-- 你的标签内容 -->
  <mat-tab label="标签1">标签1内容</mat-tab>
  <mat-tab label="标签2">标签2内容</mat-tab>
  <mat-tab label="标签3">标签3内容</mat-tab>
</mat-tab-group>

样式调整(CSS)

需要添加一些样式来让标题栏布局更合理:

.custom-tab-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
}

.search-container mat-form-field {
  width: 200px;
  font-size: 14px;
}

组件类补充

在组件类里需要获取mat-tab-group的实例,用来遍历标签:

import { ViewChild } from '@angular/core';
import { MatTabGroup } from '@angular/material/tabs';

@Component({
  // 组件元数据(selector、templateUrl等)
})
export class YourComponent {
  @ViewChild(MatTabGroup) tabGroup: MatTabGroup;
  searchQuery: string = '';
}

方法二:CSS绝对定位快速实现

如果不想修改标题栏的整体结构,可以通过绝对定位把搜索栏放到标题栏的右侧:

模板代码

<mat-tab-group class="tab-group-with-search">
  <div class="search-bar">
    <mat-form-field appearance="outline">
      <input matInput placeholder="搜索标签..." [(ngModel)]="searchQuery">
    </mat-form-field>
  </div>

  <mat-tab label="标签1">标签1内容</mat-tab>
  <mat-tab label="标签2">标签2内容</mat-tab>
  <mat-tab label="标签3">标签3内容</mat-tab>
</mat-tab-group>

样式代码

.tab-group-with-search {
  position: relative;
}

.search-bar {
  position: absolute;
  top: 8px;
  right: 16px;
}

.search-bar mat-form-field {
  width: 200px;
  font-size: 14px;
  background: white;
}

这两种方法都能实现需求,方法一更灵活,适合需要对标题栏做更多自定义的场景;方法二更简单快速,适合快速添加搜索栏的情况。

内容的提问来源于stack exchange,提问作者rahs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:11:14