Sim*_*ver 3 svg material-design angular-material angular
我正在使用Angular Material的MatIconRegistry创建自己的SVGmat-icon
this.iconRegistry.addSvgIcon('cat',
this.sanitizer.bypassSecurityTrustResourceUrl('assets/images/animals/cat.svg'));
Run Code Online (Sandbox Code Playgroud)
这很有效,除了它创建一个HTTP请求来加载图标。由于这是一个非常小的重要猫图标,因此我希望将其嵌入模块中,因此不需要HTTP请求。
最终设法使用找出了答案svg-inline-loader。
declare let require: any;
...
this.iconRegistry.addSvgIconLiteral('cat', this.sanitizer.bypassSecurityTrustHtml(
require('!svg-inline-loader!src/assets/animals/cat.svg')));
Run Code Online (Sandbox Code Playgroud)
可以通过查看源main.js文件或您的模块文件验证嵌入文件,然后将其嵌入。
起初,我不愿意使用加载程序,因为我仍然对所有这些如何与CLI和webpack一起使用感到困惑-而且我还以为自己'这只是一个文件!为什么不加载该死的东西并嵌入它呢?
找到之后,svg-inline-loader它似乎从svg中删除了“外壳”,这是对类似于Illustrator可能会添加的不必要代码的怪异术语。
有关样板的其余部分,请参见如何在Angular Material中使用自定义SVG图标。
-
脚注:我做了一件愚蠢的事,这使我彻底离开了一段时间。我尝试创建一个图标数组并对其进行遍历,以将其全部导入。
require('!svg-inline-loader!src/assets/animals/' + name + '.svg');
Run Code Online (Sandbox Code Playgroud)
那是行不通的。require语句是在编译时使用一些webpack魔术来处理的,我什至不知道编译器对此做了什么,但它不可能嵌入文件。我需要为要嵌入的每个图标复制上面的addSvgIconLiteral。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |