Angular 2 http服务是否为单例?
我在共享模块中使用从@angular/http导入的http服务,我使用类继承扩展http服务。所以我的共享模块有一个名为“AuthHttp”的服务,它扩展了http服务。在我的主应用程序模块中,我定义了人员提供者,提供:http useClass:AuthHttp。在我的应用程序中,我在不同的组件中注入了http服务,这是可能的还是设计上的服务不是单例的 如果您在Angular 2 http服务是否为单例?,angular,Angular,我在共享模块中使用从@angular/http导入的http服务,我使用类继承扩展http服务。所以我的共享模块有一个名为“AuthHttp”的服务,它扩展了http服务。在我的主应用程序模块中,我定义了人员提供者,提供:http useClass:AuthHttp。在我的应用程序中,我在不同的组件中注入了http服务,这是可能的还是设计上的服务不是单例的 如果您在AppModule的@NgModule({providers:[…]})中提供服务,或者由AppModule直接或间接导入的模块,则
AppModule
的@NgModule({providers:[…]})
中提供服务,或者由AppModule
直接或间接导入的模块,则您将获得一个单例
如果您在
@Component(…)
中提供服务,则每个组件实例都会得到一个服务实例。如果您在AppModule
的@NgModule({providers:[…]})
或由AppModule
直接或间接导入的模块中提供服务,则会得到一个单例
如果您在
@组件(…)
中提供服务,则每个组件实例都会得到一个服务实例。这取决于您的代码,但您的问题中缺少了这一点,-)在您提供服务的应用程序的每个“级别”都会创建一个服务实例。这里的进一步信息:这取决于您的代码,但您的问题中缺少这一点,-)在您提供的应用程序的每个“级别”都会创建一个服务实例。更多信息:这就是我的想法。然而,我遇到了一个奇怪的情况:我在我的AppModule
中导入了我的AuthenticationModule
。在这个AuthenticationModule
中,我提供了我的AuthenticationService
(我需要它作为一个单例,因为我在那里处理成员变量)。但是,我得到了一个超过了最大调用堆栈的,这表明服务不是单例的。但是:当我在我的AppModule
而不是AuthenticationModule
中提供服务时,一切都按预期进行。你能把这里的事情弄清楚吗?从这些信息很难说。如果提供程序仅在非延迟加载模块的@NgModule()
中提供,那么由DI.Hm创建的实例将不会超过一个,似乎就是这样。在这种情况下,您是否还想到了其他什么会导致最大调用堆栈超过
?您已经找到了创建无止境循环的最有效方法;-)publicsetbypassconfirmations(val:boolean){this.bypassConfirmations=val;}
代码>(添加下划线或类似内容)代替。Maaaan非常感谢,你说得很对:D非常感谢你的帮助!:)我就是这么想的。然而,我遇到了一个奇怪的情况:我在我的AppModule
中导入了我的AuthenticationModule
。在这个AuthenticationModule
中,我提供了我的AuthenticationService
(我需要它作为一个单例,因为我在那里处理成员变量)。但是,我得到了一个超过了最大调用堆栈的,这表明服务不是单例的。但是:当我在我的AppModule
而不是AuthenticationModule
中提供服务时,一切都按预期进行。你能把这里的事情弄清楚吗?从这些信息很难说。如果提供程序仅在非延迟加载模块的@NgModule()
中提供,那么由DI.Hm创建的实例将不会超过一个,似乎就是这样。在这种情况下,您是否还想到了其他什么会导致最大调用堆栈超过
?您已经找到了创建无止境循环的最有效方法;-)publicsetbypassconfirmations(val:boolean){this.bypassConfirmations=val;}
代码>(添加下划线或类似内容)代替。Maaaan非常感谢,你说得很对:D非常感谢你的帮助!:)