Angular 2 http服务是否为单例?

Angular 2 http服务是否为单例?,angular,Angular,我在共享模块中使用从@angular/http导入的http服务,我使用类继承扩展http服务。所以我的共享模块有一个名为“AuthHttp”的服务,它扩展了http服务。在我的主应用程序模块中,我定义了人员提供者,提供:http useClass:AuthHttp。在我的应用程序中,我在不同的组件中注入了http服务,这是可能的还是设计上的服务不是单例的 如果您在AppModule的@NgModule({providers:[…]})中提供服务,或者由AppModule直接或间接导入的模块,则

我在共享模块中使用从@angular/http导入的http服务,我使用类继承扩展http服务。所以我的共享模块有一个名为“AuthHttp”的服务,它扩展了http服务。在我的主应用程序模块中,我定义了人员提供者,提供:http useClass:AuthHttp。在我的应用程序中,我在不同的组件中注入了http服务,这是可能的还是设计上的服务不是单例的

如果您在
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非常感谢你的帮助!:)