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

时间:2019-12-10 18:42:09

标签: angular local-storage session-storage ngxs

我将NGXS与@ngxs/storage-plugin一起使用。当我将插件导入模块内部时,可以通过localStorage选项将插件配置为使用sessionStoragestorage

当用户在登录时选中“记住我”选项时,我的App应该使用localStorage;而当他不想使用“记住我”选项时,则使用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 {}

1 个答案:

答案 0 :(得分:1)

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

如果您可以控制存储引擎,则可能会起作用。不知道您是否可以使用angular的DI注入商店/其他内容来判断用户是否尝试设置“ rememberMe”。

export class MyStorageEngine implements StorageEngine {
  ....

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