Angular正确引入MatIconModule仍提示mat-icon不是已知元素如何解决
Angular
mat-icon 报「未知元素」错误排查方案 使用<mat-icon>时抛出ngtsc(-998001)报错,提示'mat-icon' is not a known element,即使已在根模块导入MatIconModule、在index.html引入图标字体仍未解决的,按以下顺序排查:
- 核对组件所属模块作用域
Angular模块导入有作用域限制,根模块导入的模块不会自动生效于所有子模块:- 如果使用
<mat-icon>的组件声明在某个特性模块(含懒加载模块)下,必须在对应特性模块的imports数组中也导入MatIconModule;也可以新建共享模块SharedModule,统一导出所有需要复用的Angular Material模块,之后在用到组件的模块中导入SharedModule即可 - 如果使用
<mat-icon>的是标记了standalone: true的独立组件,不需要在模块中注册,直接在该组件自身的imports数组中添加MatIconModule即可 - 如果是单元测试文件(
.spec.ts)中使用mat-icon报该错,需要在TestBed配置的imports数组中加入MatIconModule
- 如果使用
- 核对版本兼容性
在项目根目录执行命令查看版本:
确认ng version@angular/material的大版本号与@angular/core、@angular/cli的大版本号完全一致,版本不兼容会导致模块注册失效,版本不匹配时卸载重装对应版本的Angular Material即可。 - 核对导入路径与缓存问题
- 确认
MatIconModule的导入路径为@angular/material/icon,不存在拼写错误 - 停止本地运行的
ng serve进程,删除项目根目录下的.angular缓存文件夹,重新执行启动命令,旧编译缓存经常会导致组件识别异常
- 确认
- 不要滥用
CUSTOM_ELEMENTS_SCHEMA屏蔽报错
该配置仅用于原生自定义Web Component场景,添加后只会隐藏报错,不会让mat-icon组件正常渲染,不要用这个方案解决Angular组件的识别问题。
你当前已完成的两处配置是正确的,无需修改:
- AppModule中导入并注册
MatIconModule的代码写法符合要求- index.html中引入Material Icons字体链接的写法符合要求
内容的提问来源于stack exchange,提问作者Fares Belaid
相关产品推荐
相关产品推荐

