angular 6 个自定义 material 图标,支持连字
angular 6 custom material icons with ligature support
是否可以创建支持连字的自定义 material 图标。
我目前正在使用 svgIcon
获取自定义图标,
有什么方法可以实现连字支持的自定义图标吗?
我当前的代码片段如下
app.component.ts
import { Component } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { MatIconRegistry } from '@angular/material';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'app';
constructor(
iconRegistry: MatIconRegistry,
sanitizer: DomSanitizer
) {
iconRegistry.addSvgIcon('key',
sanitizer.bypassSecurityTrustResourceUrl('assets/icons/key.svg')
);
iconRegistry.addSvgIcon('user',
sanitizer.bypassSecurityTrustResourceUrl('assets/icons/user.svg')
);
}
}
login.component.html
<mat-form-field>
<input matInput placeholder="Username" formControlName="username">
<mat-icon matPrefix svgIcon="user"></mat-icon>
<mat-error *ngIf="username.invalid">Username is required</mat-error>
</mat-form-field>
<mat-form-field>
<input matInput type="password" placeholder="Password" formControlName="password">
<mat-icon matPrefix svgIcon="key"></mat-icon>
<mat-error *ngIf="password.invalid">Password is required</mat-error>
</mat-form-field>
当然有可能:
步骤 1)获取所有 SVG 图标。
步骤 2) 使用自定义连字创建您的字体。
This is a tool, to create your own font library with ligature support.
https://icomoon.io
第 3 步:
声明你自己的字体。
@font-face {
font-family: 'icomoon';
src: url('path.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
第 4 步:
使用您自己的字体
覆盖 .material-icons
.material-icons {
font-family: 'MyFontFamily';
...
}
或声明您自己的 fontSet
,这样您就可以同时使用两者。
// Register to AppComponent
constructor(iconRegistry: MatIconRegistry) {
iconRegistry.registerFontClassAlias('MyFontFamily', 'MyIconClass');
}
最后一步。
<mat-icon>LigatureToDisplay</mat-icon>
或
<mat-icon fontSet="MyIconClass">LigatureOrUnicodeToDisplay</mat-icon>
Here is a small tutorial.
https://medium.com/@buddhiv/add-a-custom-icon-font-in-your-application-b1e07a687953
是否可以创建支持连字的自定义 material 图标。
我目前正在使用 svgIcon
获取自定义图标,
有什么方法可以实现连字支持的自定义图标吗?
我当前的代码片段如下
app.component.ts
import { Component } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { MatIconRegistry } from '@angular/material';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'app';
constructor(
iconRegistry: MatIconRegistry,
sanitizer: DomSanitizer
) {
iconRegistry.addSvgIcon('key',
sanitizer.bypassSecurityTrustResourceUrl('assets/icons/key.svg')
);
iconRegistry.addSvgIcon('user',
sanitizer.bypassSecurityTrustResourceUrl('assets/icons/user.svg')
);
}
}
login.component.html
<mat-form-field>
<input matInput placeholder="Username" formControlName="username">
<mat-icon matPrefix svgIcon="user"></mat-icon>
<mat-error *ngIf="username.invalid">Username is required</mat-error>
</mat-form-field>
<mat-form-field>
<input matInput type="password" placeholder="Password" formControlName="password">
<mat-icon matPrefix svgIcon="key"></mat-icon>
<mat-error *ngIf="password.invalid">Password is required</mat-error>
</mat-form-field>
当然有可能:
步骤 1)获取所有 SVG 图标。
步骤 2) 使用自定义连字创建您的字体。
This is a tool, to create your own font library with ligature support. https://icomoon.io
第 3 步:
声明你自己的字体。
@font-face {
font-family: 'icomoon';
src: url('path.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
第 4 步: 使用您自己的字体
覆盖.material-icons
.material-icons {
font-family: 'MyFontFamily';
...
}
或声明您自己的 fontSet
,这样您就可以同时使用两者。
// Register to AppComponent
constructor(iconRegistry: MatIconRegistry) {
iconRegistry.registerFontClassAlias('MyFontFamily', 'MyIconClass');
}
最后一步。
<mat-icon>LigatureToDisplay</mat-icon>
或
<mat-icon fontSet="MyIconClass">LigatureOrUnicodeToDisplay</mat-icon>
Here is a small tutorial.
https://medium.com/@buddhiv/add-a-custom-icon-font-in-your-application-b1e07a687953