Angular Material Icon使用详解


Posted in Javascript onNovember 07, 2018

1. 引入图标资源

在项目index.html文件里添加icon的图标库文件的引用。

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="external nofollow" rel="stylesheet">

2. 导入MatIconModule

如果需要在别的组件同样使用,则需要exports里面引出.

3. icons 资源

可以访问material design获取全部icon名称及图标样式信息。

4. 自定义svg图标资源

在网上下载svg资源,并将文件保存到项目assets目录里。

注册图标资源
注册图标资源需要用到:

  1. MatIconRegistry 以及 DomSanitizer 类。
  2. MatIconRegistry(图标资源是基于字体而不是图片的)

使用MatIconRegistry的下面方法addSvgIcon,addSvgIconInNamespace, addSvgIconLiteral 或者addSvgIconLiteralInNamespace 注册.

DomSanitizer 可以把值净化为在不同 DOM 上下文中的安全内容,来帮你防范跨站脚本攻击(XSS)类的安全问题。

abstract class DomSanitizer implements Sanitizer {
 abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null
 abstract bypassSecurityTrustHtml(value: string): SafeHtml
 abstract bypassSecurityTrustStyle(value: string): SafeStyle
 abstract bypassSecurityTrustScript(value: string): SafeScript
 abstract bypassSecurityTrustUrl(value: string): SafeUrl
 abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl
}

abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null
SecurityContext:枚举

enum SecurityContext {
 NONE: 0
 HTML: 1
 STYLE: 2
 SCRIPT: 3
 URL: 4
 RESOURCE_URL: 5
}

SafeValue :一个标记性接口,用于表示一个值可以安全的用在特定的上下文中。

SafeValue 子接口:

  • SafeHtml
  • SafeResourceUrl
  • SafeScript
  • SafeStyle
  • SafeUrl

如果这个值在这个上下文中是可信的,则该方法会解开所包含的安全值,并且直接使用它;否则,这个值就会根据给定的安全上下文净化成安全的,比如替换那些具有不安全协议(例如 javascript:)的 URL。 该实现负责确保在给定的上下文中可以绝对安全的使用该值。

其余函数警告: 使用不可信的用户数据调用此方法将会让你的应用暴露在 XSS 安全风险之下!

当使用 bypassSecurityTrust... 时,请尽量确保尽早调用该方法,并且让他尽可能接近值的来源,以便能更容易地验证使用它时有没有引入安全风险。

这2个类需要DI进组件。

import {MatIconRegistry} from '@angular/material';
import {DomSanitizer} from '@angular/platform-browser';

constructor( iconRegistry:MatIconRegistry ,domSanitizer:DomSanitizer ){
 iconRegistry.addSvgIcon('bell',domSanitizer.bypassSecurityTrustResourceUrl('assets/bell.svg'));
}

svg导入需要http支持,因为DomSanitizer 涉及url解析,因此需要导入httpClientModule。

import { HttpClientModule} from '@angular/common/http'

@NgModule({
  imports: [
   HttpClientModule,
  ]
})
export class AppModule { }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
判断iframe是否加载完成的完美方法
Jan 07 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
js中this的用法实例分析
Jan 10 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
Vue之Mixins(混入)的使用方法
Sep 24 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 Javascript
详解Webpack loader 之 file-loader
Nov 07 #Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 #Javascript
javascript动态创建对象的属性详解
Nov 07 #Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 #Javascript
详解在vue-test-utils中mock全局对象
Nov 07 #Javascript
vue-cli 首屏加载优化问题
Nov 06 #Javascript
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 #Javascript
You might like
简单谈谈 php 文件锁
2017/02/19 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
Python实现模拟时钟代码推荐
2015/11/08 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
详解python3中的真值测试
2018/08/13 Python
python版本单链表实现代码
2018/09/28 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
公司薪酬管理制度
2014/01/31 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
工作作风建设心得体会
2014/10/22 职场文书
教师师德表现自我评价
2015/03/05 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
亲戚关系证明
2015/06/24 职场文书