Angular 2/4 +共享模块:forRoot()或不toRoot()

问题描述 投票:0回答:2

自从挖掘角度依赖注入(DI)的前几个基本级别,并且击中了用于Root()的gem之后,我一直想知道实际使用它的最佳实践是什么。

我偶然发现了这种方法,同时寻找一种允许延迟加载模块访问根上下文中的服务的方法,允许在两个模块之间共享数据流,其中一个或两个模块可能是延迟加载的。从那以后我想知道,你可以为共享模块中的所有内容使用forRoot()并在整个应用程序中保存大量的import语句吗?捕获量是多少?是否存在某些易于用于root的东西,以及其他不容易使用的东西?或者是root用于主要开发用于桥接延迟加载的模块时桥接上述DI上下文问题?

angular typescript rxjs angular-services angular-module
2个回答
7
投票

forRoot()的目的是在应用程序中使用singleton services

forRoot()的意思是只有service出口的ModuleWithProviders的一个例子。没有forRoot(),如果你在模块的service中添加了providers并在许多地方使用该模块,那么你可以在应用程序的不同层中拥有许多service实例。使用forRoot(),如果在任何地方找不到最后一个,它将创建一个service的新实例。


1
投票

forRoot静态方法只是配置模块提供程序的约定。

例如:RouterModule.forRoot:您将路由传递给forRoot方法,以便使用路由配置应用程序范围的路由器服务。

使用您在应用程序中的任何位置使用的组件,指令和管道创建SharedModule。

SharedModule不应该有reasons explained here的提供者。任何进口或再出口的模块也不应该有供应商。如果您偏离本指南,请了解您正在做什么以及为什么做。

© www.soinside.com 2019 - 2024. All rights reserved.