本地和会话存储之间的 NGXS 存储插件更改

NGXS storage-plugin change between local & session storage

我在 @ngxs/storage-plugin 中使用 NGXS。当我在模块中导入插件时,我可以通过 storage 选项将插件配置为使用 localStoragesessionStorage

当用户在登录时选中 "remember me" 选项时,我的应用程序应该使用 localStorage,而当他不会使用 "remember me" 选项时,我的应用程序应该使用 sessionStorage

有什么想法可以用 @ngxs/storage-plugin 实现吗?

@NgModule({
    imports: [
        CommonModule,
        NgxsModule.forRoot(STATES_MODULES, OPTIONS_CONFIG),
        NgxsStoragePluginModule.forRoot({storage: '????'}),
        NgxsReduxDevtoolsPluginModule.forRoot(DEVTOOLS_REDUX_CONFIG),
        NgxsLoggerPluginModule.forRoot(LOGGER_CONFIG)
    ],
    exports: [NgxsModule]
})
export class NgxsStoreModule {}

我会使用自定义存储引擎: https://www.ngxs.io/plugins/storage#custom-storage-engine

如果您可以控制您的存储引擎,那也许行得通。不确定您是否可以使用 angular 的 DI 注入 store/something else 以确定用户是否试图设置 'rememberMe'。

export class MyStorageEngine implements StorageEngine {
  ....

  setItem(key: string, val: any): void {
    if (rememberMe) {
      // set with localStorage
    } else {
      // set with sessionStorage
    }
  }
  ....
}