Angular decorator@Injectable在角5+;
据我所知,一个类可以通过一个装饰器从角度注入器中注入依赖项,比如Angular decorator@Injectable在角5+;,angular,Angular,据我所知,一个类可以通过一个装饰器从角度注入器中注入依赖项,比如@Injectable,@Component P> >我认为 @可注射< /COD>装饰器是某种“徽章”,告诉我“I(类)允许你注入依赖性,我请求”,我相信这是正确的。 但官方文件中的这句话让我感到困惑: @Injectable() export class UserContextService {} @Injectable decorator表示Angular DI系统用于创建UserContextService的一个或多个实
@Injectable
,@Component
<> P> >我认为<代码> @可注射< /COD>装饰器是某种“徽章”,告诉我“I(类)允许你注入依赖性,我请求”,我相信这是正确的。
但官方文件中的这句话让我感到困惑:
@Injectable()
export class UserContextService {}
@Injectable decorator表示Angular DI系统用于创建UserContextService的一个或多个实例
据我所知,@Injectable
decorator与创建类实例的注入器无关
我错过什么了吗
注有趣的是,这一点上的文档是错误的
@Injectable
实际上意味着“我(服务)可以将其他服务注入我”。考虑这样一种服务,称为<代码> Service 2<代码>,尝试在构造函数中注入<代码> Service 1<代码>:
// If you remove this, you will get an error
@Injectable()
export class Service2 {
constructor(private service: Service1) {
}
}
正如注释所指出的,删除@Injectable()
会导致抛出错误。你可以试着用一种新的方法。组件不需要@Injectable()
就可以在其中注入服务
我发现,但似乎什么也没有从中得到。想想看,我从字面上理解了文档,并一直在错误地使用@Injectable()
。谢谢你的提问
这促使我更深入地研究文档引用的测试。它失败了,但不是因为文件上说它失败的原因。他们实际上有一个测试来验证你可以注入一个没有装饰器的服务。我为好奇的人写了更多的信息。我认为这是不对的。Angular injector完全能够在不使用
@Injectable
装饰器的情况下注入类的实例。Angular在类请求没有装饰器的依赖项时抛出错误。我写了一个关于这个的测试。正如你所看到的,Test1Service
没有@Injectable
decorator,但是AppComponent
的注入器完美地注入了它的一个实例,没有任何问题。嘿@DongBinKim在阅读了你的评论之后,我写了同样的测试应用程序,得出了同样的结论,并找到了答案。文件是错误的。我将编辑我的答案。很高兴讨论:D谢谢!