本地添加自定义icon
- 将icon文件放置可访问的静态资源下(angular.json配置好)
- 通过服务方式注册icon
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Injectable()
export class StartupService {
constructor(
private iconSrv: NzIconService,
private sanitizer: DomSanitizer
) {
this.loadSvgIcon('inticon:software', 'assets/outline/software.svg');
}
loadSvgIcon(name: string, url: string): void {
this.httpClient.get(url, { responseType: 'text' }).subscribe(
svg => {
const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(svg);
this.iconSrv.addIconLiteral(name, sanitizedSvg as any);
}
);
}
}
import { StartupService } from '@core';
export function StartupServiceFactory(startupService: StartupService): () => Observable<void> {
return () => startupService.load();
}
const APPINIT_PROVIDES = [
StartupService,
{
provide: APP_INITIALIZER,
useFactory: StartupServiceFactory,
deps: [StartupService],
multi: true
}
];
@NgModule({
declarations: [AppComponent],
imports: [],
providers: [...APPINIT_PROVIDES],
bootstrap: [AppComponent]
})
export class AppModule {}
<!-- <i nz-icon nzType="software" nzTheme="outline"></i> -->
{
"text": "仪表盘",
"i18n": "menu.dashboard",
"icon": "inticon anticon-software"
},
- 下次讲下angular是如何开放本地资源,可通过http访问的。