![]() |
1
30
如果使用providedin,则可注入文件将注册为模块的提供程序,而不将其添加到模块的提供程序中。
从
|
![]() |
2
18
有关更多信息,请考虑阅读 documentation 和 NgModule FAQs 顺便说一句:
|
![]() |
3
5
Providedin告诉Angular根注入器负责创建服务的实例。以这种方式提供的服务会自动提供给整个应用程序,不需要在任何模块中列出。 服务类可以充当它们自己的提供者,这就是为什么在@injectable decorator中定义它们是您所需要的全部注册。 |
![]() |
4
4
来自DOCS
将类标记为可供Injector创建。
服务本身是一个由cli生成的类,用@injectable()修饰。
通过将哪个注入器与@ngmodule或其他注入器类型关联,或通过指定该注入器应在“根”注入器中提供来确定哪个注入器将提供该注入器,该注入器将是大多数应用程序中的应用程序级注入器。
当您在根级别提供服务时,angular会创建一个共享的服务实例,并将其注入任何需要它的类中。在@Injectable()元数据中注册提供程序还允许Angular通过从编译的应用程序中删除服务(如果未使用)来优化应用程序。
还可以指定在特定的@ngmodule中提供服务。例如,如果不希望应用程序可以使用服务,除非它们导入您创建的模块,则可以指定应在模块中提供服务
这种方法是首选的,因为它可以使树摇动( 树木抖动 是构建过程中的一个步骤,如果没有注入,则从服务的代码基中移除未使用的代码。 如果无法在服务中指定哪个模块应提供服务,也可以在模块中声明服务的提供程序:
|
![]() |
5
2
根据
|