Angular 4.x:没有服务提供商
我在Angular 4.x中将一个服务注入另一个服务时遇到问题,并收到错误:Angular 4.x:没有服务提供商,angular,angular-services,Angular,Angular Services,我在Angular 4.x中将一个服务注入另一个服务时遇到问题,并收到错误:error:No provider for SkillsService 我创造了一个新的世界。您可以通过克隆repo并从repo根目录简单地运行ng test在本地运行它 我采取的步骤 使用ng new创建应用程序 使用ng g服务联系人创建ContactService 使用ng g服务技能创建技能服务 将SkillsService添加到ContactService的构造函数中(带有@Inject注释) 将SkillsS
error:No provider for SkillsService代码>
我创造了一个新的世界。您可以通过克隆repo并从repo根目录简单地运行ng test
在本地运行它
我采取的步骤
使用ng new创建应用程序
使用ng g服务联系人创建ContactService
使用ng g服务技能创建技能服务
将SkillsService添加到ContactService的构造函数中(带有@Inject注释)
将SkillsService和ContactService作为提供者添加到app.module.ts
运行ng测试
并接收错误:错误:没有SkillsService的提供程序代码>
如何将提供者添加到SkillsService的ContactService
看起来它一定很简单,但从文档和搜索中很难找到答案。您对ContactService的测试使用了一个只声明ContactService为提供者的测试模块。但是ContactService需要一种技能服务。因此,SkillsService还必须是测试模块提供商的一部分:
TestBed.configureTestingModule({
providers: [ContactService, SkillsService]
});
您还可以在测试中使用整个应用程序模块:
TestBed.configureTestingModule({
imports: [AppModule]
});
但我不建议这样做,因为随着应用程序的增长,您的测试将变得越来越慢。您为什么要执行@Inject(SkillsService)private SkillsService:SkillsService
?你不能直接使用私有skillsService:skillsService
?@echonax这也是初始化服务的另一种方法,我可能错了,但是你能检查一下这些服务是否有@Injectable()
decorator吗top@RahulSingh我知道,但在这种情况下它绝对没有用例。好吧,看看测试代码:。您正在尝试获取ContactService的实例,该实例需要SkillsService,但SkillsService不在测试模块的提供程序中。谢谢。我关注的是应用程序模块的配置,而不是测试设置。问题已解决:)