为什么Angular2不能自动检测组件定义中使用的指令和提供程序?

为什么Angular2不能自动检测组件定义中使用的指令和提供程序?,angular,angular2-template,angular2-directives,angular2-services,Angular,Angular2 Template,Angular2 Directives,Angular2 Services,对于模板中使用的自定义指令,我想Angular在组件函数的directive属性中告诉它之前不知道新的html元素/属性可能是有意义的 然而,我不明白的是,尽管我们通过组件构造函数中的参数传递这些服务名称,为什么Angular没有找到我们想要的依赖注入提供者。这是一个设计决策,还是Angular无法仅从构造函数参数中找出所需的提供者 本质上,当我们已经有constructorheroService:HeroService{…}时,为什么我们需要提供者:[HeroService] 实际上已经处理好

对于模板中使用的自定义指令,我想Angular在组件函数的directive属性中告诉它之前不知道新的html元素/属性可能是有意义的

然而,我不明白的是,尽管我们通过组件构造函数中的参数传递这些服务名称,为什么Angular没有找到我们想要的依赖注入提供者。这是一个设计决策,还是Angular无法仅从构造函数参数中找出所需的提供者


本质上,当我们已经有constructorheroService:HeroService{…}时,为什么我们需要提供者:[HeroService]

实际上已经处理好了。RC5删除了很多样板代码

因此,在@Component或@Directive声明中不再需要“directives”或“providers”语法


链接:

实际上已经处理好了。RC5删除了很多样板代码

因此,在@Component或@Directive声明中不再需要“directives”或“providers”语法


链接:

提供者定义了两件事

范围 定义提供程序的地方定义将注入的实例。 在根目录中添加的提供者与整个应用程序共享一个实例。 组件上的提供程序覆盖其自身及其子树的根提供程序

具体价值 你可以有一个像这样的提供者


提供者定义了两件事

范围 定义提供程序的地方定义将注入的实例。 在根目录中添加的提供者与整个应用程序共享一个实例。 组件上的提供程序覆盖其自身及其子树的根提供程序

具体价值 你可以有一个像这样的提供者


这无疑是一个设计决策,因为在某些情况下,您可能希望在整个应用程序中使用单例服务,而在另一种情况下,您可能需要相同服务的更多实例

关于@cDecker32的答案,您仍然需要注册提供商,只是现在您需要在@NgModules中注册。请查看以下文档:


这绝对是一个设计决策,因为在某些情况下,您可能希望在整个应用程序中使用单例服务,而在另一种情况下,您可能需要相同服务的更多实例

关于@cDecker32的答案,您仍然需要注册提供商,只是现在您需要在@NgModules中注册。请查看以下文档:

{ provide: HeroService, useClass: SuperHeroService }
{ provide: 'SomeConfig', useValue: 'someValue' }
{ provide: Foo, useFactory: () => new Bar() }