Ng-Matero V10 正式发布!

Angular v10 在六月下旬就悄无声息的发布了,虽然 v9 的发布延期了两个月,但是 v10 并没有受影响,仍然如期而至。
相比 v9 的重量级发布,v10 并没有颠覆性的变化,主要还是 bug 修复及细节优化。通过 ng new 生成的项目目录稍有不同,不过不用担心,使用 ng update 直接升级即可,CLI 会自动帮你替换这些文件,没有任何阻碍。
再来说一下 Angular Material, v10 有一个非常大的变化,就是增加了 datepicker 的区间选择功能,不用多说,这是一个极其实用的功能。相比很多第三方实现来说,官方组件的交互细节就是赞。
在 Angular v10 发布不久,立即就有人提 issue 要求 Ng-Matero 也升级到 v10,由于受限于第三方组件库及其它细节考虑,迟迟没有更新。耽误了一个多月,趁本周不太忙,终于完成了升级。其实 v10 版本除了将 Angular 和 Angular Material 升级之外,主要是调整了 schematics ng add 的兼容问题,其它代码和 v9 最新版是一样的。前期的工作主要是完善 v9 的版本。
本文主要说一下 Ng-Matero 以及 Material Extensions 几个关键的优化点。
国际化
Material Extensions
主要是 Data Grid 的国际化支持,涉及表头、操作按钮、弹窗等,该功能的版本需要 >=9.10.0。
最开始的国际化方案是遍历 columns 数据赋值,实现方式比较粗糙,不够优雅。最终参考了 ngx-formly 的设计方案,每个文本都支持传入响应式数据流,以 ngx-translate 为例,通过 translate.stream 监听语言变化即可。
columns: MtxGridColumn[] = [
{
header: this.translate.stream('name'),
field: 'name',
},
...
{
header: this.translate.stream('operation'),
field: 'operation',
type: 'button',
buttons: [
{
type: 'basic',
text: this.translate.stream('delete'),
icon: 'delete',
tooltip: this.translate.stream('delete'),
color: 'warn',
pop: true,
popTitle: this.translate.stream('confirm_delete'),
popCloseText: this.translate.stream('close'),
popOkText: this.translate.stream('ok'),
click: () => {
alert('delete');
},
},
],
},
];
在线示例:https://ng-matero.github.io/extensions/data-grid#i18n-ngx-translate
Ng-Matero
Ng-Matero 在 9.2.0 的时候已经增加了 i18n 相关的代码及示例,但是并不完善。在 9.6.0 的时候重点增加了 formly 的校验提示的 i18n,而且关于 formly 的全局配置模块也移到了 app 根目录。这个变动主要是考虑到 formly 表单模块的重要性以及目录结构的合理性。

在线示例:https://ng-matero.github.io/ng-matero/#/forms/dynamic
主题化
主题化的内容可以说很多,暂时不展开讲,简单说一下 Material Extensions 和 Ng-Matero 在主题配置方面的改动。
Material Extensions
扩展组件库的大部分组件都做了主题样式分离,从 9.11.0 之后必须要定义主题样式。熟悉 Material 组件库的朋友应该都不陌生。
@import '~@ng-matero/extensions/theming';
@include material-extensions-theme($theme);
主题化改动最大的组件是 mtx-select,因为 ng-select 不支持主题定制,所以 mtx-select 重写了 ng-select 的所有样式。

在线示例:https://ng-matero.github.io/extensions/select
Ng-Matero
首先对 theme 模块下面的样式进行了重构,组件样式都移到了独立的文件夹中,另外将主题样式分离出来,通过 _app-theme.scss 文件整合所有和应用相关的主题样式。
@import '~@ng-matero/extensions/theming';
@import '~@mat-datetimepicker/core/datetimepicker/datetimepicker-theme.scss';
@import '../app/theme/style/reboot-theme';
@import '../app/theme/header/header-theme';
@import '../app/theme/sidebar/sidebar-theme';
@import '../app/theme/sidemenu/sidemenu-theme';
@import '../app/theme/topmenu/topmenu-theme';
@import '../app/theme/customizer/customizer-theme';
@import '../app/shared/components/error-code/error-code-theme';
@import './custom/table-theme';
// Styles for the app that are based on the current theme.
@mixin matero-admin-theme($theme) {
@include material-extensions-theme($theme);
@include mat-datetimepicker-theme($theme);
@include matero-reboot-theme($theme);
@include matero-header-theme($theme);
@include matero-sidebar-theme($theme);
@include matero-sidemenu-theme($theme);
@include matero-topmenu-theme($theme);
@include matero-customizer-theme($theme);
@include matero-error-code-theme($theme);
@include custom-table-theme($theme);
}
除此之外,Ng-Matero 在样式上做了很多细节优化,比如侧边栏的主题样式。
在线示例:https://ng-matero.github.io/ng-matero/#/dashboard
总结
不知不觉,距离 Ng-Matero 第一版发布马上就满一年。短暂的一年中经历了很多,往事不堪回首,感谢所有朋友以及素未谋面的陌生人的支持。
目前的重点依然是开发 Material Extensions 组件库以及完善文档。如果大家对 Angular Material 感兴趣或者在开发过程中遇到了问题,欢迎联系我或者加入自助 QQ 群。

Ng-Matero V10 正式发布!的更多相关文章
- VMware Workstation(虚拟机软件) V10.0 简体中文版可以安装了
在虚拟机软件中VMware Workstation算是一款非常强大较稳定的软件了,今天 VMware Workstation 10.0正式发布了,最让人欣喜的是该版本终于有了简体中 文版了,从现在开始 ...
- Angular v6 正式发布
Angular 6 正式发布 Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进. 作为发布的一部分,我们同步了主要 ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布
距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ...
- 易企秀微场景2016最新完整版V10.5,小编亲测修复众多错误
易企秀V10.5更新说明1.修复拨号英文错误2.修复转送场景问题3.修复设置场景密码乱码问题4.修复前台批量删除客户图片5.修复数据收集分页问题6.修复图片分类错乱问题7.修复音乐和特效冲突问题8.修 ...
- 【码在江湖】前端少侠的json故事(中)ng的json
ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...
- AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!
文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...
- ionic的常用命令总结以及正式发布的准备
常用命令: npm install -g ionic cordova(需要安装node) ionic start cutePuppyPics --v2(建app cutePuppyPics app名字 ...
随机推荐
- 题解 洛谷 P5324 【[BJOI2019]删数】
先考虑对于一个序列,能使其可以删空的的修改次数. 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理. 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的\(n\ ...
- Python对列表去重的各种方法
一.循环去重 二.用 set() 去重 1.set()对list去重 2.list 是有序的,用 sort() 把顺序改回来 三.利用 dict 的属性来去重 1.用 dict 的 fromke ...
- PHPSTORM常用插件
Translation 最好用的翻译插件 .env files support 可以在env函数使用是提示.env文件中所有的key值的自动完成功能 PHP composer.json support ...
- 关于调用三方平台接口与推送接口的总结<二>(2020.7.27)
前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是 https://www.cnblogs.com/alanturingson/p/13377500.ht ...
- Java Script 数组
数组:有许多变量的集合,它们的名称和数据类型都是一致的. 定义 操作(添加修改) Var arr=new Array(): Var arr=[ ]; //定义 Var arr1=[ 1,2,3, ...
- 算法数据结构 | 只要30行代码,实现快速匹配字符串的KMP算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法数据结构专题的第29篇文章,我们来聊一个新的字符串匹配算法--KMP. KMP这个名字不是视频播放器,更不是看毛片,它其实是由Kn ...
- Python按值传递参数和按引用传递参数
Python按值传递参数和按引用传递参数: 按值传递参数: 使用一个变量的值(数字,字符串),放到实参的位置上 注:传递过去的是变量的副本,无论副本在函数中怎么变,变量的值都不变 传递常量: # 传递 ...
- 什么是 PHP SimpleXML?
PHP SimpleXML PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理. 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性 ...
- PHP strnatcasecmp() 函数
实例 使用"自然"算法来比较两个字符串(不区分大小写): <?php高佣联盟 www.cgewang.comecho strnatcasecmp("2Hello w ...
- 三个技巧帮助Docker镜像瘦身
在构建Docker容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快. 但RUN语句总是会创建一个新层,而且在生成镜像之前还需要使用很多中间文件,在这种情况下,该如何获得体 ...