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