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 相关文章推荐
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
JS生成一维码(条形码)功能示例
Jan 19 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
Jul 27 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
微信小程序可滑动周日历组件使用详解
Oct 21 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
详解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产生动态的影像图
2006/10/09 PHP
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
javascript读取RSS数据
2007/01/20 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python自动发邮件脚本
2017/03/31 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
python多进程实现文件下载传输功能
2018/07/28 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
前台文员岗位职责
2015/02/04 职场文书
妈妈别哭观后感
2015/06/08 职场文书
百家讲坛观后感
2015/06/12 职场文书
电视新闻稿
2015/07/17 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android