我的应用程序有几个模块.请参见下面的内容.StoreService由AssetModule提供,由其他两个服务导入.
- assets资源 模块
- StoreService(可注入,由模块提供)
- 仪表板模块
- assets资源 模块和StoreService参考
- MapModule
- AssetModule和StoreService参考
每当我们使用下面的路由配置路由到这些模块时,每次都会创建StoreService.尽管StoreService是一个单件.如果我们延迟加载这些模块,问题会变得更糟,每次我们路由到该模块时都会创建StoreService.当创建一个新的函数时,不会同时调用OnDestroy.因此,如果我们注册到可观察对象/emits 器,则会为所有已停用的StoreService实例触发事件.
我们如何避免这种行为?
export const routes: Routes = [
{
path: '',
loadChildren: () => DashboardModule,
canActivate: [LoginAllRoutesGuard]
},
{
path: 'asset',
loadChildren: () => AssetModule,
canActivate: [LoginAllRoutesGuard]
},
{
path: 'map',
loadChildren: () => MapModule,
canActivate: [LoginAllRoutesGuard]
},