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 相关文章推荐
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
JavaScript实现的SHA-1加密算法完整实例
Feb 02 Javascript
微信小程序  wx.request合法域名配置详解
Nov 23 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
微信小程序 JS动态修改样式的实现代码
Feb 10 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
RxJS在TypeScript中的简单使用详解
Apr 13 Javascript
node+vue实现文件上传功能
May 28 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 高效率写法 推荐
2010/02/21 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python 异常处理的实例详解
2017/09/11 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
python中if及if-else如何使用
2020/06/02 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
运动会广播稿200米
2014/01/27 职场文书
学校门卫管理制度
2014/01/30 职场文书
煤矿安全生产标语
2014/06/06 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
中标通知书
2015/04/17 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript
python+opencv实现目标跟踪过程
2022/06/21 Python