2017-02-10 54 views
2

在John Papa非常好的course on Angular 2中,他建议根据经验法则,提供商在@NgModule而不是@Components中注册,因为很少需要将提供者隐藏其他组件。在Angular 1中,所有提供者都需要在模块级进行注册,因此不存在任何争议。但是,什么情况下才能打破这种经验法则呢?在角度模块或组件中注册提供商

回答

3

如果您在每个组件中注册,则每次创建组件的实例时都会创建new object for that service。因此,如果您需要为每个组件提供自己的服务,请在组件中提供它们。

如果您需要singleton service,请在模块中提供它,并且该模块的所有组件都将获得相同的服务实例。