"संग्रहण के लिए कोई प्रदाता" सब कुछ मैं मिल सकता है पढ़ने, और असफल होने के बाद, मैं यहाँ पूछना चाहिए:Ionic2 त्रुटि:
मैं बस की तरह डॉक मेरे लिए कहता है, ionic2 के भंडारण का उपयोग करने की कोशिश कर रहा हूँ,
डॉक: https://ionicframework.com/docs/storage/
यहाँमेरी कोड है:
एप्लिकेशन-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);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
,210
home.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);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
}
विधि है कि कहा जाता है और भंडारण का उपयोग करने के लिए माना जाता है मुखपृष्ठ के save()
है।
मैं नहीं मिल है कि अब तक, तथापि, क्योंकि पेज भी लोड होने से पहले, मैं प्राप्त कर सकते हैं
Runtime Error Uncaught (in promise): Error: No provider for Storage! Error at g (http://localhost:8100/build/polyfills.js:3:7133) at injectionError (http://localhost:8100/build/main.js:1585:86) at noProviderError (http://localhost:8100/build/main.js:1623:12) at ReflectiveInjector_.throwOrNull (http://localhost:8100/build/main.js:3125:19) at ReflectiveInjector.getByKeyDefault (http://localhost:8100/build/main.js:3164:25) at ReflectiveInjector.getByKey (http://localhost:8100/build/main.js:3096:25) at ReflectiveInjector.get (http://localhost:8100/build/main.js:2965:21) at AppModuleInjector.get (ng:///AppModule/module.ngfactory.js:254:82) at AppModuleInjector.getInternal (ng:///AppModule/module.ngfactory.js:481:44) at AppModuleInjector.NgModuleInjector.get (http://localhost:8100/build/main.js:3929:44) at resolveDep (http://localhost:8100/build/main.js:11334:45) at createClass (http://localhost:8100/build/main.js:11202:32) at createDirectiveInstance (http://localhost:8100/build/main.js:11028:37) at createViewNodes (http://localhost:8100/build/main.js:12377:49) at createRootView (http://localhost:8100/build/main.js:12282:5)
Package.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"
}
जब से मैं सब कुछ किया था डॉक ने कहा, कृपया मुझे प्रबुद्ध - क्या अभी भी याद आ रही है कि भंडारण का कारण होगा ढूंढा जाना नहीं चाहते
धन्यवाद
आपके ऐप मॉड्यूल में, क्या आपने IonicStorageModule (forRoot) को स्थानांतरित करने का प्रयास किया है जो प्रदाता सरणी में आपके आयात विवरण में है? ऐसा लगता है कि त्रुटि उस दिशा में बहुत मुश्किल है। सुनिश्चित नहीं है कि आपको रूट भाग की आवश्यकता है, लेकिन मैं इसे आयात सरणी और प्रदाता सरणी से बाहर ले जाने की कोशिश करता हूं। बहुत यकीन है कि जहां इंजेक्शन योग्य चीजें जाने की जरूरत है। – chairmanmow
@chchanmow http://stackoverflow.com/questions/42788623/local-storage-in-ionic-2- यहां आतंक यह मुझे ऐसा करने के लिए कहता है जो मैंने किया था, साथ ही दस्तावेज़ https://ionicframework.com/docs/storage/राज्यों में यह आयात में है – Gulzar
हम्म, हाँ, मुझे लगता है कि आपने निर्देशों का पालन किया है। मैंने एक चीज देखी जो शायद शामिल हो, मैंने देखा कि आप '@ ionic/storage' से 'आयात {संग्रहण} आयात कर रहे हैं;' एक स्थान, और आपका आयात आयात {संग्रहण} '@ आयनिक/संग्रहण' से; ... ध्यान दें कि एस उनमें से एक में पूंजीकृत है। वैसे भी, सुनिश्चित नहीं है कि मैं कितनी मदद कर सकता हूं, लेकिन शायद यह एक टाइपो है। – chairmanmow