我正在使用Angular 9应用实现NgRx的懒惰加载。
当应用程序加载时,我的状态是这样的
当我导航到路由'account-config'时,状态发生了变化,因为我已经懒得加载模块,并在导入时实现了StoreModule.forFeature。然后,我的状态看起来像这样
我想知道,当我导航到其他路径时,是否有办法删除'accountconfig'节点,并在我回到'account-config'时再次放入。
这些是我的路由。
const routes: Routes = [
{
path: '',
component: AppLayoutComponent,
canActivate: [ AuthGuard ],
children: [
{ path: 'dashboard', loadChildren: () => import('./pages/modules/dashboard/dashboard.module').then(m => m.DashboardModule) },
{ path: 'account-config', loadChildren: () => import('./pages/modules/account-config/account-config.module').then(m => m.AccountConfigModule) },
]
},
{
path: '',
component: AuthLayoutComponent,
children: [
{ path: 'session', loadChildren: () => import('./pages/modules/session/session.module').then(m => m.SessionModule) }
]
},
{
path: '**',
redirectTo: 'session/not-found'
}
];
我想有一个办法,就是 Store
类有一个方法 removeReducer
:
removeReducer<Key extends Extract<keyof T, string>>(key: Key) {
this.reducerManager.removeReducer(key);
}
商店的每个片断都与一个减速器相关联,所以你可以通过删除它们的键来摆脱一些片断。
仓库中的 Store
课堂也有: addReducer
:
addReducer<State, Actions extends Action = Action>(
key: string,
reducer: ActionReducer<State, Actions>
) {
this.reducerManager.addReducer(key, reducer);
}
所以我认为你可以使用 store.addReducer(key, reducer)
关于 ngOnInit
和 store.removeReducer(key)
关于 ngOnDestroy
.