Erreur Ionic2: "Aucun fournisseur pour le stockage"
Après avoir lu tout ce que j'ai pu trouver, et à défaut, je dois demander ici:
Je suis en train d'utiliser ionic2 de Stockage, tout comme le doc me dit,
doc: https://ionicframework.com/docs/storage/
voici mon Code:
app-module.ts
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { Intro } from '../pages/intro/intro';
import { Checklist } from '../pages/checklist/checklist';
//import { Http } from '@angular/http';
import {IonicStorageModule} from '@ionic/Storage';
import { Data } from '../providers/data';
import {HttpModule} from '@angular/http';
//import {Storage} from '@ionic/storage';
@NgModule({
declarations: [
MyApp,
HomePage,
Intro,
Checklist
],
imports: [
HttpModule,
BrowserModule,
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot()
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
Intro,
Checklist
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
//Storage,
//Http,
Data
],
})
export class AppModule {}
data.ts
import { Injectable } from '@angular/core';
//import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
//import { HttpModule } from '@angular/http';
import { Storage } from '@ionic/storage';
@Injectable()
export class Data {
constructor(public storage: Storage) {
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
getData(): Promise<any> {
return this.storage.get('checklists');
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
save(data): void {
let saveData = [];
//Remove observables
data.forEach((checklist) => {
saveData.push({
title: checklist.title,
items: checklist.items
});
});
let newData = JSON.stringify(saveData);
this.storage.set('checklists', newData);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
la maison.ts
//import { Component } from '@angular/core';
//import { NavController } from 'ionic-angular';
//@Component({
// selector: 'page-home',
// templateUrl: 'home.html'
//})
//export class HomePage {
// constructor(public navCtrl: NavController) {
// }
//}
import { Component } from '@angular/core';
import { NavController, AlertController, Platform } from 'ionic-angular';
import { Checklist } from '../checklist/checklist';
import { ChecklistModel } from '../../models/checklist-model';
import { Data } from '../../providers/data';
import { Keyboard } from 'ionic-native';
@Component({
selector: 'page-home',
templateUrl: 'home.html',
})
export class HomePage {
checklists: ChecklistModel[] = [];
constructor(public navCtrl: NavController, public dataService: Data,
public alertCtrl: AlertController, public platform: Platform) {
}
//constructor(public navCtrl: NavController, public alertCtrl: AlertController, public platform: Platform) {
// //this.checklists.push(new ChecklistModel("Noam", [1,2,3]));
//}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
ionViewDidLoad() {
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
addChecklist(): void {
let prompt = this.alertCtrl.create({
title: 'New Checklist',
message: 'Enter the name of your new checklist below:',
inputs: [
{
name: 'name'
}
],
buttons: [
{
text: 'Cancel'
},
{
text: 'Save',
handler: data => {
let newChecklist = new ChecklistModel(data.name, []);
this.checklists.push(newChecklist);
newChecklist.checklistUpdates().subscribe(update => {
this.save();
});
this.save();
}
}
]
});
prompt.present();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
renameChecklist(checklist): void {
let prompt = this.alertCtrl.create({
title: 'Rename Checklist',
message: 'Enter the new name of this checklist below:',
inputs: [
{
name: 'name'
}
],
buttons: [
{
text: 'Cancel'
},
{
text: 'Save',
handler: data => {
let index = this.checklists.indexOf(checklist);
if (index > -1) {
this.checklists[index].setTitle(data.name);
this.save();
}
}
}
]
});
prompt.present();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
viewChecklist(checklist): void {
this.navCtrl.push(Checklist, {
checklist: checklist
});
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
removeChecklist(checklist): void {
let index = this.checklists.indexOf(checklist);
if (index > -1) {
this.checklists.splice(index, 1);
this.save();
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
save(): void {
Keyboard.close();
this.dataService.save(this.checklists);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
}
La méthode qui est censé être appelé et utiliser l'espace de Stockage est de la page d'Accueil save()
.
Je ne peux pas en arriver là, cependant, parce que, avant même charge, je reçois
Runtime Erreur non Interceptée (promesse): Erreur: Pas de fournisseur pour le Stockage!
Erreur à g (http://localhost:8100/build/polyfills.js:3:7133) à
injectionError (http://localhost:8100/build/main.js:1585:86) à
noProviderError (http://localhost:8100/build/main.js:1623:12) à
ReflectiveInjector_.throwOrNull
(http://localhost:8100/build/main.js:3125:19) à
ReflectiveInjector.getByKeyDefault
(http://localhost:8100/build/main.js:3164:25) à
ReflectiveInjector.getByKey
(http://localhost:8100/build/main.js:3096:25) à
ReflectiveInjector.get (http://localhost:8100/build/main.js:2965:21)
au AppModuleInjector.get (ng:///AppModule/module.ngfactory.js:254:82)
au AppModuleInjector.getInternal
(ng:///AppModule/module.ngfactory.js:481:44)
AppModuleInjector.NgModuleInjector.obtenez de l'
(http://localhost:8100/build/main.js:3929:44) à resolveDep
(http://localhost:8100/build/main.js:11334:45) à createClass
(http://localhost:8100/build/main.js:11202:32) à
createDirectiveInstance (http://localhost:8100/build/main.js:11028:37)
au createViewNodes (http://localhost:8100/build/main.js:12377:49) à
createRootView (http://localhost:8100/build/main.js:12282:5)
Paquet.json:
{
"name": "ionic-hello-world",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"config": {
"ionic_source_map": "source-map"
},
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve"
},
"dependencies": {
"@angular/common": "4.0.0",
"@angular/compiler": "4.0.0",
"@angular/compiler-cli": "4.0.0",
"@angular/core": "4.0.0",
"@angular/forms": "4.0.0",
"@angular/http": "4.0.0",
"@angular/platform-browser": "4.0.0",
"@angular/platform-browser-dynamic": "4.0.0",
"@ionic-native/core": "3.4.2",
"@ionic-native/splash-screen": "3.4.2",
"@ionic-native/status-bar": "3.4.2",
"@ionic/storage": "^2.0.1",
"ionic-angular": "3.0.1",
"ionic-native": "^2.9.0",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.4.0",
"zone.js": "^0.8.4"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.0",
"typescript": "~2.2.1",
"webpack": "^2.4.1"
},
"cordovaPlugins": [
"cordova-plugin-whitelist",
"cordova-plugin-console",
"cordova-plugin-statusbar",
"cordova-plugin-device",
"cordova-plugin-splashscreen",
"ionic-plugin-keyboard"
],
"cordovaPlatforms": [],
"description": "quicklists: An Ionic project"
}
Depuis que j'ai fait tout ce que le doc a dit, merci de m'éclairer - Ce qui manque encore qui provoque le Stockage ne pas être trouvé
Grâce
source d'informationauteur Gulzar
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez installer:
npm install --save @ionic/storage
Le problème était dans l'app.ts:
Capital " S "à la place de non capital "s":
au lieu de:
Aucune idée de pourquoi le compilateur ne marcherait pas que si c'est un problème, mais il n'a pas.
Grâce à @chairmanmow
Dans mon cas, j'ai oublié d'ajouter ce qui suit dans l'app.le module.ts
import { IonicStorageModule } from '@ionic/storage';
@NgModul({
...,
Imports: [
...
IonicStorageModule.forRoot()
],
d'abord faire ce npm install --save @ionique/stockage
J'ai réussi à obtenir ce travail à l'aide de cette ..
À l'intérieur de
app.module.ts
Et puis ...
Et puis dans mon
page.ts
Dans le constructeur ...
Et puis, dans les entrailles de mon code ..
et d'importation de l'app.le module.ts
entrez le code ici