Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular decorator@Injectable在角5+;_Angular - Fatal编程技术网

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谢谢!