我尝试在我的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
]
...
答案 0 :(得分:11)
自Ionic 2.2.0起,建议使用@ ionic / storage version 2.0.0。自上一版本以来,app.modules.ts中的配置已更改。如果您没有以正确的方式更改所有内容,则会发生错误。
在app.modules.ts中进行以下更改:
更改导入声明:
来自:import { Storage } from '@ionic/storage';
至:import { IonicStorageModule } from '@ionic/storage';
将以下内容添加到imports数组中:
IonicStorageModule.forRoot()
导入数组应如下所示:
imports: [
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot()
],
注意:不要在任何其他文件中对Storage的导入进行任何更改。
答案 1 :(得分:0)
您的 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()方法来存储和检索网页中的数据。看看Ionic 2 Storage Tutorial Blog with example video。希望这有帮助