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

Angular-Tree-Grid表头与行自定义CSS样式实现方法咨询

Angular-Tree-Grid 自定义CSS样式实现方案

由于Angular默认的样式封装机制,直接在组件CSS中写样式无法穿透到db-angular-tree-grid内部的DOM元素,我们可以通过:host ::ng-deep(限定样式仅作用于当前组件内的树形表格)来实现自定义样式,以下是针对你需求的具体实现:

1. 修改表头字体及样式

在tree-grid.component.css中添加以下代码,自定义表头的字体、背景色、内边距等:

/* 穿透到树形表格的表头单元格 */
:host ::ng-deep .db-angular-tree-grid th {
  font-family: 'Arial', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: #2c3e50;
  background-color: #f8f9fa;
  text-align: left;
  padding: 12px 8px;
  border-bottom: 2px solid #dee2e6;
}

2. 为表格行添加背景色

包括默认行样式、奇偶行区分、鼠标hover状态的样式:

/* 所有表格行的基础样式 */
:host ::ng-deep .db-angular-tree-grid tr {
  background-color: #ffffff;
  transition: background-color 0.2s ease;
}

/* 奇偶行差异化背景色 */
:host ::ng-deep .db-angular-tree-grid tr:nth-child(even) {
  background-color: #f5f7fa;
}

/* 鼠标hover行时的背景色 */
:host ::ng-deep .db-angular-tree-grid tr:hover {
  background-color: #e8f4f8;
}

/* 子节点行缩进(增强层级视觉效果,可选) */
:host ::ng-deep .db-angular-tree-grid .child-row td {
  padding-left: 24px;
}

3. 自定义单元格样式(可选)

如果需要调整单元格的字体、边框等细节:

:host ::ng-deep .db-angular-tree-grid td {
  font-family: 'Arial', sans-serif;
  font-size: 13px;
  color: #34495e;
  padding: 10px 8px;
  border-bottom: 1px solid #e0e0e0;
}

替代方案:关闭样式封装

如果::ng-deep在你的Angular版本中被标记为过时,可以通过修改组件的样式封装策略实现:
在组件的@Component装饰器中添加:

encapsulation: ViewEncapsulation.None

这种方式下需要用父容器类名限定样式范围,避免污染全局样式:

.container .db-angular-tree-grid th {
  /* 表头样式代码 */
}
.container .db-angular-tree-grid tr {
  /* 行样式代码 */
}

你的组件代码参考:

TreeGridComponent.html

<div class="container">
  <db-angular-tree-grid
    #angularGrid 
    [data]="data" 
    [configs]="configs"
  >
  </db-angular-tree-grid>
</div>

TreeGridComponent.ts

import { Component, ViewChild } from '@angular/core';
import { AngularTreeGridComponent } from 'angular-tree-grid';

@Component({
  selector: 'app-tree-grid',
  templateUrl: './tree-grid.component.html',
  styleUrls: ['./tree-grid.component.css']
})
export class TreeGridComponent {
  @ViewChild('angularGrid') angularGrid!: AngularTreeGridComponent;
  data: any = [
    {
      id: 1,
      name: 'Gross Sales',
      age: 60,
      weight: 60,
      gender: 1,
      parent: 0,
    },
    {
      id: 2,
      name: 'Gross Units',
      age: 40,
      weight: 95,
      gender: 1,
      parent: 1,
    },
    {
      id: 3,
      name: 'Gross Sales Dollars',
      age: 36,
      weight: 105,
      gender: 1,
      parent: 0,
    },
  ];
  // Define the columns for the tree grid
  configs:any = {
    id_field: 'id',
    parent_id_field: 'parent',
    parent_display_field: 'name',
    columns: [
      {
        name: 'name',
        header: 'Name',
        width: '100px',
      },
      {
        name: 'age',
        header: 'July 2020',
      },
      {
        name: 'weight',
        header: 'July 2020',
      },
      {
        name: 'gender',
        header: 'September 2020',
      },
    ],
  };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:23:14