【发布时间】:2018-09-25 23:23:48
【问题描述】:
我在使用 Angular Material 2 中的注册图标时遇到问题。我遵循了他们的 github repository 示例,但没有运气。
在我的 AppComponent 中:
constructor(mdIconRegistry: MdIconRegistry, sanitizer: DomSanitizer) {
mdIconRegistry
.addSvgIcon('thumb-up',
sanitizer.bypassSecurityTrustResourceUrl('./thumbup-icon.svg'))
}
模板:
<md-icon svgIcon="thumb-up"></md-icon>
在控制台中,我收到错误“检索图标时出错:未定义”。所以它知道它已注册并且很可能路径存在问题。我已经尝试了许多不同的路径变体,但都没有奏效。为简单起见,我们假设 SVG 文件位于 app.component.ts 旁边的 app 文件夹中
有类似的(关闭的)issue on github 也没有得到回答,所以我知道我不是唯一一个遇到这个问题的人。我正在使用 Angular CLI,我想这也可能是配置问题。
结构
- 源
- 应用程序
- app.component.ts
- // 我已经尝试将 SVG 放在这里
- ...
- 资产
- //我也试过把SVG放在这里
- ...
- ...
- 应用程序
【问题讨论】:
-
您使用的是
angular和material的哪个版本?另外,您的文件夹结构中图标的路径是什么? -
@Faisal 很可能是 Angular 2.x/4,x,因为使用了构造函数,而
mdIconRegistry仅在 Angular 材料中可用。 -
很可能你的 svg 文件路径是错误的。
-
我创建了带有适当标签的问题。 “angular”指的是 angular2+,“angular-material2”指的是material.angular.io
-
您的实现看起来是正确的,尽管现在它是
,所以只需提供正确的资产 url。将图标放在资产文件夹中,然后将 url 设置为“assets/path-to-icon/icon-name.svg”(注意没有“./”——不需要)。图标的路径不一定是 material.io 上的示例所说的那样。在我自己的库中,路径是“assets/material-design-icons/alert/svg/production/ic_error_24px.svg”。