从不同的googled文章中,我需要在组件配置中使用提供者:[],或者有时我需要在我的构造函数中使用@Inject()或直接注入引导(app,[service])?我也看过一些文章要我把@injectable装饰器。
例如:要注入Http,我只需要导入{Http}并将Http放在提供者中,但对于FormBuilder,我需要在构造函数中使用@Inject()。
有什么经验法则什么时候使用什么?请你提供一些示例代码片段?谢谢 :-)
这意味着您可以在不同级别配置提供程序:
>对于引导它的整个应用程序。在这种情况下,所有子注入器(组件)将看到此提供程序并共享与之关联的实例。当交互时,它将是同一个实例
>对于特定组件及其子组件。与以前相同,但对于特定的组件。其他组件不会看到此提供程序。如果您重新定义上面定义的内容(例如,在引导时),将使用此提供程序。所以你可以重写事情。
>服务。没有与他们相关的提供商。它们使用触发元素的注入器(直接=组件或间接地=触发服务链调用的组件)
关于你的其他问题:
> @Injectable。要注入课堂,你需要一个装饰师。组件有一个(@Component一个),但是服务是简单的类。如果服务需要注入依赖关系,则需要这个装饰器。
> @Inject。在大多数时候,构造器参数的类型足以让Amgular2确定要注入的内容。在某些情况下(例如,如果您明确使用OpaqueToken而不是一个类来注册提供程序),则需要指定一些关于注入内容的提示。在这种情况下,您需要使用@Inject。
有关详细信息,请参阅这些问题
> What’s the best way to inject one service into another in angular 2 (Beta)?
> Angular2: Inject a non @Injectable class
> Inject all Services that implement some Interface