我已经在我的应用程序中实现了惰性加载模块,app.module.ts被正确配置。
路由配置
通过子模块中的提供程序字段提供服务,并在该模块的组件之间进行切换会重新实例化该服务(通过记录服务构造函数进行测试)。
该服务仅在模块中提供。
为什么提供的服务不是单例模式?
编辑:
我修改了一个Plunker示例,添加了一个仅在该模块范围内(在此情况下为后端模块)使用的服务。在BackendComponent和BackendSecondComponent之间切换(两者都在惰性加载的模块中声明),服务会被重新实例化(在控制台中可见)。 Plunker链接
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
HomeComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
routing
],
bootstrap: [AppComponent]
})
export class AppModule { }
路由配置
const APP_ROUTES: Routes = [
{ path: '', component: HomeComponent },
{ path: 'tools', loadChildren: 'app/tools/tools.module#ToolsModule' }
];
export const routing = RouterModule.forRoot(APP_ROUTES);
通过子模块中的提供程序字段提供服务,并在该模块的组件之间进行切换会重新实例化该服务(通过记录服务构造函数进行测试)。
该服务仅在模块中提供。
@NgModule({
declarations: [
ToolsComponent,
ToolsCartComponent,
ToolsContainerComponent,
ToolsFormComponent
],
imports: [
CommonModule,
toolsRouting
],
providers: [ToolsService]
})
export class ToolsModule { }
为什么提供的服务不是单例模式?
编辑:
我修改了一个Plunker示例,添加了一个仅在该模块范围内(在此情况下为后端模块)使用的服务。在BackendComponent和BackendSecondComponent之间切换(两者都在惰性加载的模块中声明),服务会被重新实例化(在控制台中可见)。 Plunker链接