Angular复用组件时使用ngx-export-as遭遇NG2003注入令牌错误
Angular复用组件时使用ngx-export-as遭遇NG2003注入令牌错误
嗨,我之前也碰到过类似的坑,别慌,咱们一步步来排查解决这个问题~
这个NG2003错误本质上是Angular找不到你要注入的ExportAsService对应的注入令牌,通常是以下几个原因导致的,咱们挨个排查:
先检查新组件所属模块是否导入了NgxExportAsModule
之前的组件能用,大概率是它们所在的模块已经导入了NgxExportAsModule,但你新建的ReportRdComponent所属的模块(比如ReportModule或者AppModule)可能漏加了这个依赖。打开对应的模块文件,确保代码是这样的:import { NgxExportAsModule } from 'ngx-export-as'; @NgModule({ imports: [ // 其他你需要的模块 NgxExportAsModule ], declarations: [ReportRdComponent] }) export class YourTargetModule { }检查组件内的注入写法是否正确
确认你已经在组件里正确导入了ExportAsService,并且构造函数的注入语法没问题:import { ExportAsService } from 'ngx-export-as'; @Component({ selector: 'app-report-rd', templateUrl: './report-rd.component.html' }) export class ReportRdComponent { constructor(private exportAsService: ExportAsService) { } // 你的导出逻辑代码 }有时候可能手滑漏了导入,或者拼写错了服务名称,都会导致Angular识别不了。
如果是独立组件(Angular 14+),要在组件的imports里直接添加模块
要是你的ReportRdComponent是独立组件(加了standalone: true),那得把NgxExportAsModule加到组件自己的imports数组里:@Component({ selector: 'app-report-rd', templateUrl: './report-rd.component.html', standalone: true, imports: [NgxExportAsModule] }) export class ReportRdComponent { constructor(private exportAsService: ExportAsService) { } }最后试试清理缓存重新编译
要是上面几步都没问题,可能是缓存搞的鬼,运行ng clean清理一下,再重新执行ng serve或者ng build试试。
一般来说,前两步就能解决问题,尤其是模块导入的遗漏,这是新建组件时最容易犯的小错误~
备注:内容来源于stack exchange,提问作者Lojini
相关产品推荐
相关产品推荐

