AngularMaterialIcon使⽤详解
1. 引⼊图标资源
在项⽬index.html⽂件⾥添加icon的图标库⽂件的引⽤。
<link href="leapis/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 安全风险之下!
当使⽤ 时,请尽量确保尽早调⽤该⽅法,并且让他尽可能接近值的来源,以便能更容易地验证使⽤它
时有没有引⼊安全风险。
这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,
svg图]
})
export class AppModule { }
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论