当前位置: 首页 > news >正文

关于ngx-datatable no data empty message自定义模板解决方案

背景:由于ngx-dataable插件默认没有数据时显示的文案是no data to display,且没有任何样式。这里希望通过自定义模板来实现。但目前github中有一个案例是通过设置代码:

https://swimlane.github.io/ngx-datatable/empty**

      <ngx-datatable
        class="material"
        [rows]="[]"
        [columns]="columns"
        [columnMode]="ColumnMode.force"
        [headerHeight]="50"
        [footerHeight]="50"
      >
        <div empty-content style="text-align: center;"
          >My custom empty component<br />uses two lines.</div
        >
      </ngx-datatable>

我尝试了下,没有效果估计是要angular17+以上吧,而我目前对于升级angular不太被支持,因此有了以下成功的解决方案,即嵌入一个自定义模板:

当前版本:angular16+ts+“@swimlane/ngx-datatable”: “^20.1.0”

html

          <ngx-datatable
          ......
            [messages]="messages"
            >
            </ngx-datatable>

ts

  messages = {
    emptyMessage: `
    <div id="ngxEmptyMessage" class="ngxEmptyMessage">
      <img class="emptyImg" src="./assets/icons/icon_frame.png">
      <span class="emptyMessage">No results</span>
    </div>
  `
  }

sass/css

::ng-deep .ngxEmptyMessage
  display: flex
  flex-direction: column
  justify-content: center
  align-items: center
  .emptyMessage
    color: #999
    font-size: 14px
    line-height: 22px
    margin-top: 8px
  .emptyImg
    width: 42px
    height: 42px
::ng-deep .ngx-datatable.material .empty-row
  height: auto
  padding: 130px 0

效果如图:

在这里插入图片描述

如果要给文案加上国际化,比如{{‘common.no-data’|translate}},是不可行的,解决方式如下:

只贴基于上面修改到的代码:核心就是改成${this.translate.instant(‘common.no-data’)},然后添加监控,实时获取国际化

import {TranslateService} from "@ngx-translate/core";
  messages = {
      emptyMessage: `
        <div id="ngxEmptyMessage" class="ngxEmptyMessage">
          <img class="emptyImg" src="./assets/icons/icon_frame.png">
          <span class="emptyMessage">${this.translate.instant('common.no-data')}</span>
        </div>
  `};
  constructor(private translate: TranslateService  ) {
  }
  ngOnInit(): void {
      this.translate.onLangChange.subscribe(() => {
        this.updateEmptyMessage();
      });
  }
  updateEmptyMessage() {
    this.translate.get('common.no-data').subscribe((translation: string) => {
      this.messages = {
        emptyMessage: `
          <div id="ngxEmptyMessage" class="ngxEmptyMessage">
            <img class="emptyImg" src="./assets/icons/icon_frame.png">
            <span class="emptyMessage">${this.translate.instant('common.no-data')}</span>
          </div>
        `
      };
    });
  }

相关文章:

  • 在虚拟机VMware上安装CENTOS7-图文教程
  • 【iOS逆向与安全】sms短信转发插件与上传服务器开发
  • 解锁 Postman:下载安装与账户注册使用的全攻略,踏上测试新征程
  • 项目管理系统在制造企业 IPD 研发管理中的应用实践
  • 硬件电路 - 推挽(PP)输出与开漏(OD)输出的区别
  • ViM-UNet模型详解及代码复现
  • 如和实现一个服务器端高并发线程池
  • 【C++】滑动窗口算法
  • Kubernetes服务部署 —— Kafka
  • 安卓Android与iOS设备管理对比:企业选择指南
  • SVN 拉取,文件冲突 解决办法
  • ClickHouse 数据倾斜实战:案例分析与优化技巧
  • 基于 Simulink 的超级储能参与电网一次调频仿真研究
  • uniapp+Vue3 组件之间的传值方法
  • simpleGRPO实现分享)
  • p标签中嵌套ul
  • 产品经理的大语言模型课 03 - 定制自己的大语言模型
  • Qt 驾校考试系统项目实现
  • AWS容器化部署指南
  • 【C++】特殊类设计
  • 83岁山水花鸟画家、书法家吴静山离世,系岭南画派代表人物
  • 义乌至迪拜“铁海快线+中东快航”首发,物流成本降低18%
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤
  • 打造信息消费新场景、新体验,上海信息消费节开幕
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦
  • 上海市第二十届青少年科技节启动:为期半年,推出百余项活动