上一篇聊聊刚上手的 DevUI:华为云这套组件库实战体验了 DevUI 的环境和基础组件,今天咱们来啃个硬骨头——DataTable(表格)

做中后台系统,表格绝对是C位。展示数据、翻页、排序、筛选……需求一个接一个。之前用原生 table 标签写,逻辑写到想吐。这次试了试 DevUI 的 DataTable,说实话,刚开始看文档有点懵,但上手后发现它确实解决了不少痛点。

这篇主要记录下我是怎么把一个基础表格跑起来的,顺便分享几个常用的配置,免得大家跟我一样踩坑。

准备工作:引入模块

第一步还是老样子,别忘了在模块里导入。Angular 的 Standalone 模式下,直接在组件的 imports 里加 DataTableModule 就行。

import { DataTableModule } from 'ng-devui/data-table';

@Component({
  // ...
  imports: [DataTableModule, ...],
})
export class UserTableComponent { }

在这里插入图片描述

实战:撸一个用户列表

最简单的表格,其实只要两个东西:数据源 (dataSource)列定义 (d-column)

假设我们有一堆用户数据,长这样:

// 模拟数据
basicDataSource = [
  { firstName: '张', lastName: '三', gender: '男', dob: '1990-01-01' },
  { firstName: '李', lastName: '四', gender: '女', dob: '1995-05-20' },
  // ... 更多数据
];

HTML 里的写法比我想像中简洁:

<d-data-table [dataSource]="basicDataSource" [scrollable]="true">
  <!-- 序号列 -->
  <d-column field="$index" header="#" width="50px"></d-column>
  
  <!-- 姓名列 -->
  <d-column field="firstName" header="" width="100px"></d-column>
  <d-column field="lastName" header="" width="100px"></d-column>
  
  <!-- 性别列 -->
  <d-column field="gender" header="性别" width="80px"></d-column>
  
  <!-- 日期列 -->
  <d-column field="dob" header="出生日期" fieldType="date" width="150px"></d-column>
</d-data-table>

这里有个细节我觉得很赞:fieldType="date"。加上这个,它自动帮你格式化日期,不用自己写 pipe 或者处理函数,省事!

在这里插入图片描述

常用属性速查(附避坑指南)

光会跑 Demo 还没用,实际开发里这几个属性出镜率极高。我整理了一份“人话版”速查表,建议收藏:

1. d-data-table (表格本体)

属性 说明 老哥建议
dataSource 数据源 必填。这就不用解释了吧。
scrollable 是否滚动 强烈推荐 true。数据一多页面容易被撑爆,开了这个才会有滚动条。
fixHeader 固定表头 长表格必备,不用上下反复横跳看表头。记得配合 maxHeight 一起用。
checkable 开启多选 一行代码开启 Checkbox,做批量删除时简直神器,省去手写逻辑的烦恼。
size 表格尺寸 sm/md/lg。后台系统屏幕寸土寸金,我一般喜欢用 sm (小号)。

2. d-column (列定义)

属性 说明 老哥建议
field 字段名 对应数据对象里的 key,写错显示就是白板。
header 表头文字 就是列的名字。
width 列宽 建议给关键列定死宽度 (如 100px),剩下的让它自适应,不然布局容易崩。
fieldType 列类型 偷懒神器。设为 date 自动格式化日期,不用自己手写 Pipe。

在这里插入图片描述
在这里插入图片描述

写在最后

DevUI 的表格组件给我的感觉是“下限很高,上限也很高”。
基础功能几行代码就能搞定,满足80%的需求没问题。
但我看了下文档,它还有虚拟滚动、树形表格、拖拽排序这些高级货,下次有复杂需求的时候再专门研究下。

这几天用下来,感觉华为这套东西确实是从实战里打磨出来的,很多默认行为都很符合后台系统的习惯。如果你也在做类似的项目,真的可以试试。

资料

DevUI官网:https://devui.design/home

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐