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 正式发布!的更多相关文章

  1. VMware Workstation(虚拟机软件) V10.0 简体中文版可以安装了

    在虚拟机软件中VMware Workstation算是一款非常强大较稳定的软件了,今天 VMware Workstation 10.0正式发布了,最让人欣喜的是该版本终于有了简体中 文版了,从现在开始 ...

  2. Angular v6 正式发布

    Angular 6 正式发布 Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进. 作为发布的一部分,我们同步了主要 ...

  3. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  4. 微软.NET Core RC2正式发布,横跨所有平台

    .NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...

  5. 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布

    距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ...

  6. 易企秀微场景2016最新完整版V10.5,小编亲测修复众多错误

    易企秀V10.5更新说明1.修复拨号英文错误2.修复转送场景问题3.修复设置场景密码乱码问题4.修复前台批量删除客户图片5.修复数据收集分页问题6.修复图片分类错乱问题7.修复音乐和特效冲突问题8.修 ...

  7. 【码在江湖】前端少侠的json故事(中)ng的json

    ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...

  8. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  9. ionic的常用命令总结以及正式发布的准备

    常用命令: npm install -g ionic cordova(需要安装node) ionic start cutePuppyPics --v2(建app cutePuppyPics app名字 ...

随机推荐

  1. linux命令笔记记录(自用)

    1.解除yum锁定: sudo rm -rf /var/run/yum.pid 2.删除文件夹: rm -rf /var/log/httpd/access 3.更新pip: python -m pip ...

  2. NAS存储的定义和优势介绍

    今天来跟大家分享下私有云的一种应用形式NAS.作为常见的个人和家庭私有云存储方案,NAS就像我们随身的数据存储中心,它有低损耗高效率的特点,那么NAS如何搭建,家用NAS存储有哪些优势呢,一起来看看吧 ...

  3. Mybatis(二)简化Mybatis实现数据库操作

    要操作的数据库: 一.与数据库对应的bean类 public class User { private String username; private String sex; private Str ...

  4. Android中Fragment生命周期和基本用法

    1.基本概念 1. Fragment是什么? Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fra ...

  5. minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析

    1. minSdkVersion minSdkVersion限制安装application所需要的系统最低版本,低于该版本的系统都不可以安装该application.同时不能使用该level版本SDK ...

  6. Django学习路37_request属性

      打印元信息,基本上都会打印出来 类字典结构的 key 键 允许重复   get 请求可以传参,但是长度有限制 最大不能超过 2K post 文件上传使用 get 参数 默认放在网址中 post 在 ...

  7. Django学习路24_乘法和除法

    urls 中 url(r'getnum',views.getnum) views.py 中添加对应的函数 def getnum(request): num = 5 context_num = { 'n ...

  8. PHP strcoll() 函数

    实例 比较字符串: <?php高佣联盟 www.cgewang.comsetlocale (LC_COLLATE, 'NL');echo strcoll("Hello World!&q ...

  9. PHP str_rot13() 函数

    实例 编码并解码字符串: <?php高佣联盟 www.cgewang.comecho str_rot13("Hello World");echo "<br&g ...

  10. PHP addAttribute() 函数

    实例 给根元素和 body 元素添加一个属性: <?php$note=<<<XML<note>高佣联盟 www.cgewang.com<to>Tove& ...