为什么我在 2 个模块中注入服务是单例模式?
Why I inject service in 2 modules is Singleton Pattern?
以下是文件情况
AppService
AppModule
AModule
AComponent
BModule
BComponent
关于Service
,我知道如果我在两个组件中注入一个Service
,angular会生成2个不同的服务对象,服务的数据不能共享。如果我在名为 Singleton Pattern
的 AppModule
中注入 Service
,该服务将共享数据。
但是,如果在 Amodule
和 BModule
中注入 Service
会怎么样?我认为结果与注入组件相同。但事实是Singleton Pattern
。
为什么? Service
被注入到两个不同的模块中,我想 angular 应该在 2 个模块中生成 2 个服务对象。谁能帮我弄清楚?谢谢。
StackBlitz 链接是 angular-service-inject-modules
我创建了一个演示程序,它会输出随机数来检查服务是否 Singleton Pattern
当您在模块中提供服务并再次重新导入时,它在整个应用程序中都可用。您可以通过注释掉 moduleB 中的 providers = [AppService]
来验证这一点,并看到与之前相同的结果。
在每个单独的组件中提供服务,然后您可以看到注入了一个新的服务实例,如 working stackblitz 中所示。
根据评论,如果您不想在您的应用程序中注入单例服务,您可以完全省略 DI 并在每个组件中创建一个新的服务实例。
constructor() { this.random = new AppService().random; }
以下是文件情况
AppService
AppModule
AModule
AComponent
BModule
BComponent
关于Service
,我知道如果我在两个组件中注入一个Service
,angular会生成2个不同的服务对象,服务的数据不能共享。如果我在名为 Singleton Pattern
的 AppModule
中注入 Service
,该服务将共享数据。
但是,如果在 Amodule
和 BModule
中注入 Service
会怎么样?我认为结果与注入组件相同。但事实是Singleton Pattern
。
为什么? Service
被注入到两个不同的模块中,我想 angular 应该在 2 个模块中生成 2 个服务对象。谁能帮我弄清楚?谢谢。
StackBlitz 链接是 angular-service-inject-modules
我创建了一个演示程序,它会输出随机数来检查服务是否 Singleton Pattern
当您在模块中提供服务并再次重新导入时,它在整个应用程序中都可用。您可以通过注释掉 moduleB 中的 providers = [AppService]
来验证这一点,并看到与之前相同的结果。
在每个单独的组件中提供服务,然后您可以看到注入了一个新的服务实例,如 working stackblitz 中所示。
根据评论,如果您不想在您的应用程序中注入单例服务,您可以完全省略 DI 并在每个组件中创建一个新的服务实例。
constructor() { this.random = new AppService().random; }