Angular 4:集成Angular Material2
Angular Material目的是按照Material Design的规范,使用Angular和TypeScript构建一个高质量的UI组件集。
Angular 4已有的项目可以按照下面的步骤集成使用Angular Material2。
安装Angular Material以及Angular CDK
npm install --save @angular/material @angular/cdk
@angular/cdk
Component Develop Kit,这是从@angular/material分离出来单独发布到npm的包,它包含了与UI无关的通用内容。
CDK包括的模块:
- a11y:用于 Accessibility 支持(屏幕阅读器);
- observers:提供基于原生的web平台的observer的便捷指令
- layout:提供用于构建响应式UI的工具集
- overlay:用于打开屏幕的浮动面板
- portal:用于简化动态内容(模版或组件)插入过程;
- bidi:用于文本方向支持(不是所有的语言书写方向都是从左至右);
- scrolling:用于响应滚动事件
- keyboard:常用的键盘按键对应的 keyCode;
- platform:获取当前的浏览器平台以及特性支持情况;
- rxjs:提供 rxjs 的链式调用封装,避免在 lib 中引入运算符扩展;
- table:Material Data-Table 的基础(UI 无关)部分;
安装Angular Animations模块模块
Angular Material有一些组件使用@angular/animations模块的动画效果,所以需要安装@angular/animations模块
npm install --save @angular/animations
使用@angular/animations提供的动画效果需要在模块导入BrowserAnimationsModule模块
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
@NgModule({
...
imports: [BrowserAnimationsModule],
...
})
export class AppModule { }
如果不想使用@angular/animations提供的动画效果,可以导入NoopAnimationsModule模块来屏蔽
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
@NgModule({
...
imports: [NoopAnimationsModule],
...
})
export class AppModule { }
导入组件模块
Angular Material把每一个UI组件都封装在一个模块里,有两种方式导入组件模块。
方式一:在使用组件的模块导入相应组件模块
import {MatButtonModule, MatCheckboxModule} from '@angular/material';
@NgModule({
...
imports: [MatButtonModule, MatCheckboxModule],
...
})
export class AppModule { }
方式二:新建Material模块导入应用需要用到的组件模块并导出,在需要用组件的模块只要导入Material模块即可。
import {MatButtonModule, MatCheckboxModule} from '@angular/material';
@NgModule({
imports: [MatButtonModule, MatCheckboxModule],
exports: [MatButtonModule, MatCheckboxModule],
})
export class CustomMaterialModule { }
不管是哪种方式,导入组件模块需要在Angular的BrowserModule模块之后。
添加主题
使用Angular Material必须添加一个主题。
使用Angular CLI构建的项目,可以添加到styles.css
@import "~@angular/material/prebuilt-themes/indigo-pink.css";
也可以使用link方式添加到index.html。
<link href="node_modules/@angular/material/prebuilt-themes/indigo-pink.css" rel="stylesheet">
内置的主题如下:
- deeppurple-amber.css
- indigo-pink.css
- pink-bluegrey.css
- purple-green.css
支持手势
mat-slide-toggle, mat-slider, matTooltip等一些组件使用HammerJS提供的手势功能,所以也需要安装hammerjs。
安装hammerjs
npm install --save hammerjs
使用hammerjs
需要应用的入库文件导入hammerjs,如maint.ts
import 'hammerjs';
使用Material Design图标(可选)
如果使用Material Design官方的图标,可以在index.html添加图标链接
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
至此,Angular就集成了Angular Material2。