Angular 4.x:没有服务提供者



我在将服务注入 Angular 4.x 中的另一个服务时遇到问题,并收到错误:Error: No provider for SkillsService!

我创建了一个重现此错误的存储库。 可以通过克隆存储库并简单地从存储库根目录运行ng test在本地运行此操作。

我采取的步骤...

  1. 使用ng new创建应用
  2. 使用ng g service contact创建联系人服务
  3. 使用ng g service skills创建技能服务
  4. 将技能服务添加到联系人服务的构造函数(带有@Inject注释(
  5. 将技能服务和联系人服务作为提供程序添加到 app.module.ts
  6. 运行ng test并收到错误:Error: No provider for SkillsService!

如何将技能服务的提供者添加到联系人服务?

看起来它一定是非常简单的事情,但事实证明很难从文档和搜索中找出答案。

您对 ContactService的测试使用一个测试模块,该模块仅将 ContactService 声明为提供程序。但是ContactService需要一个SkillsService。因此,技能服务也必须是测试模块提供者的一部分:

TestBed.configureTestingModule({
providers: [ContactService, SkillsService]
});

您还可以在测试中使用整个应用程序模块:

TestBed.configureTestingModule({
imports: [AppModule]
});

但我不建议这样做,因为随着应用程序的增长,您的测试会变得越来越慢。

相关内容

  • 没有找到相关文章

最新更新