本地存储离子2错误

我尝试在我的Ionic 2应用程序中使用它: https : //ionicframework.com/docs/v2/storage/

我已经跑了

cordova plugin add cordova-sqlite-storage --save 

 npm install --save @ionic/storage 

成功。

当我尝试在app.module.ts中添加存储时,我遇到了这个错误:

 Error: Can't resolve all parameters for Storage: (?). at v (http://localhost:8100/build/polyfills.js:3:4864) at SyntaxError.BaseError [as constructor] (http://localhost:8100/build/main.js:127193:27) at new SyntaxError (http://localhost:8100/build/main.js:11660:16) at CompileMetadataResolver._getDependenciesMetadata (http://localhost:8100/build/main.js:27183:31) at CompileMetadataResolver._getTypeMetadata (http://localhost:8100/build/main.js:27058:26) at CompileMetadataResolver._getInjectableMetadata (http://localhost:8100/build/main.js:27046:21) at CompileMetadataResolver.getProviderMetadata (http://localhost:8100/build/main.js:27288:40) at http://localhost:8100/build/main.js:27246:49 at Array.forEach (native) at CompileMetadataResolver._getProvidersMetadata (http://localhost:8100/build/main.js:27213:19) at CompileMetadataResolver.getNgModuleMetadata (http://localhost:8100/build/main.js:26897:50) at JitCompiler._loadModules (http://localhost:8100/build/main.js:72991:64) at JitCompiler._compileModuleAndComponents (http://localhost:8100/build/main.js:72951:52) at JitCompiler.compileModuleAsync (http://localhost:8100/build/main.js:72917:21) at PlatformRef_._bootstrapModuleWithZone (http://localhost:8100/build/main.js:52753:25) 

我不明白我该如何解决它。

我的app.module.ts:

 import { Storage } from '@ionic/storage'; ... providers: [ {provide: ErrorHandler, useClass: IonicErrorHandler}, PData, PBackground, PTranslate, Storage ] ... 

自Ionic 2.2.0以来,建议使用@ ionic / storage version 2.0.0。 自上一版本以来,app.modules.ts中的配置已更改。 如果您没有以正确的方式更改所有内容,则会发生错误。

在app.modules.ts中进行以下更改:

  1. 从提供商处删除存储
  2. 更改import声明:

    from: import { Storage } from '@ionic/storage';

    to: import { IonicStorageModule } from '@ionic/storage';

  3. 将以下内容添加到imports数组中:

    IonicStorageModule.forRoot()

导入数组应如下所示:

 imports: [ IonicModule.forRoot(MyApp), IonicStorageModule.forRoot() ], 

注意:不要在任何其他文件中对Storage的导入进行任何更改。

你的app.module.ts应该是这样的,

 import { Storage } from '@ionic/storage'; export function provideStorage() { return new Storage(['sqlite', 'websql', 'indexeddb'], { name: 'database_name' }); } @NgModule({ declarations: [ ], imports: [ IonicModule.forRoot(MyApp) ], bootstrap: [IonicApp], entryComponents: [ ], providers: [ { provide: Storage, useFactory: provideStorage }, Storage ] }) 

您必须使用set()get()方法来存储和检索页面中的数据。 通过示例video查看Ionic 2 Storage Tutorial Blog 。 希望这可以帮助