스토리지에 대한 일부 매개 변수를 확인할 수 없음: (?)
저는 모달에서 가치를 얻고 있으며 ionic2angle2 프로젝트에서 로컬 스토리지를 사용하여 저장하고 싶습니다.제 코드는 아래와 같습니다.다음 오류가 발생합니다.
인home.ts페이지, 스토리지를 가져왔습니다.
import { Storage } from '@ionic/storage';
@Component({
selector: 'page-home',
templateUrl: 'home.html',
providers :[
Storage
]
})
export class HomePage {
private DistanceUnit: string;
private selectedRadious : number;
constructor(public navCtrl: NavController
public modalCtrl: ModalController,
public storage: Storage) {
}
presentModal() {
this.storage.get('distUnit').then((val) => {
console.log('Your distUnit is', val);
this.DistanceUnit = val;
})
.catch(err=>{
console.log('Your distUnit dont exist: ' + JSON.stringify(err));
this.DistanceUnit = 'Meters';
});
this.storage.get('SetRadious').then((val) => {
console.log('Your SetRadious is', val);
this.selectedRadious = val;
})
.catch(err=>{
console.log('Your SetRadious dont exist: ' + JSON.stringify(err));
this.selectedRadious = 500;
});
let obj = {selectedRadious: this.selectedRadious, DistanceUnit: this.DistanceUnit};
let myModal = this.modalCtrl.create(SettingModalPage, obj);
myModal.onDidDismiss(data => {
console.log('modal value: '+data.DistanceUnit)
this.DistanceUnit = data.DistanceUnit;
this.selectedRadious = data.selectedRadious;
this.storage.set('distUnit', this.DistanceUnit);
this.storage.set('SetRadious', this.selectedRadious);
});
myModal.present();
}
}
인app.module.ts파일,
import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { HttpModule } from '@angular/http';
import { Storage } from '@ionic/storage';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { DetailsPage } from '../pages/details/details';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { TypeApi } from '../shared/shared';
import { PlaceDetailService } from '../shared/shared';
import { LaunchNavigator, LaunchNavigatorOptions } from '@ionic- native/launch-navigator';
import { SettingModalPage } from '../pages/setting-modal/setting-modal';
@NgModule({
declarations: [
MyApp,
HomePage,
DetailsPage,
SettingModalPage
],
imports: [
IonicModule.forRoot(MyApp),
HttpModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
DetailsPage,
SettingModalPage
],
providers: [
Storage,
TypeApi,
PlaceDetailService,
LaunchNavigator,
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
버전 3.0.0 이상의 각도별 스토리지는 다음에서 확인할 수 있습니다.@ionic/storage-angular꾸러미
import { IonicStorageModule } from '@ionic/storage-angular';
부터@ionic/storage version - 2.0.0다음을 변경합니다.
app.s.ts.
import { IonicStorageModule } from '@ionic/storage';//for v 2.0.0 and below 3.0.0
//..
@ngModule({
imports: [
IonicModule.forRoot(MyApp),
HttpModule,
IonicStorageModule.forRoot(),
]
참고: 제거해야 합니다.import { Storage } from '@ionic/storage';
릴리스 정보는 여기에서 확인하십시오.
저는 이 멋진 튜트를 따라가는 동안 같은 문제에 직면했습니다.튜트를 따르도록 선택할 경우 비디오 시작 부분에 나열된 코르도바 플러그인을 설치했는지 확인합니다.
https://www.youtube.com/watch?v=Cnj9fQCyflY
http://technotip.com/5171/ionic-storage-ionic-2/
오류를 해결하는 방법은 다음과 같습니다.
아이오닉 3에서...
아래 URL에서:
https://ionicframework.com/docs/storage/
먼저 SQLite를 사용하려면 cordova-sqlite-storage 플러그인을 설치합니다.
ionic cordova plugin add cordova-sqlite-storage
그런 다음 패키지를 설치합니다(Ionic apps > Ionic V1의 경우 기본적으로 제공됨).
npm install --save @ionic/storage
그런 다음 해당 파일을 의 가져오기 목록에 추가합니다.NgModule선언(예: in)src/app/app.module.ts):
import { IonicStorageModule } from '@ionic/storage';
@NgModule({
declarations: [
// ...
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
IonicStorageModule.forRoot()
],
bootstrap: [IonicApp],
entryComponents: [
// ...
],
providers: [
// ...
]
})
export class AppModule {}
마지막으로 구성 요소 또는 페이지에 삽입합니다.
import { Storage } from '@ionic/storage';
export class MyApp {
constructor(private storage: Storage) { }
...
// set a key/value
storage.set('name', 'Max');
// Or to get a key/value pair
storage.get('age').then((val) => {
console.log('Your age is', val);
});
}
저도 이 문제를 겪었습니다.먼저 이 업데이트를 확인해야 합니다.
기본적으로 다음을 수행해야 합니다.
- 제거한다.
Storage당신의providers에app.module.ts import { IonicStorageModule } from '@ionic/storage'대신에import { IonicStorage } from '@ionic/storage'에app.module.ts- 더하다
IonicStorageModule.forRoot()에게imports의 배열.app.module.ts
그 후에도 여전히 오류가 발생했습니다(스토리지에 대한 모든 매개 변수를 확인할 수 없음: (?).Storage구성 요소의 공급자로 사용됩니다.그것을 제거해야 합니다.아래 참조:
@Component({
selector: 'login',
templateUrl: 'login.component.html',
providers: [
AuthService,
// Storage, <-- you need to remove this
JwtHelper
]
})
해결된 약속의 값에 액세스하는 코드를 다음으로 이동해야 합니다..then()그 약속의비동기 작업이기 때문에 사용할 때쯤에는 사용할 수 없을 수도 있습니다.
예를 들어, 다음과 같이 작동할 수 있습니다.
presentModal() {
this.storage.get('distUnit').then((val) => {
console.log('Your distUnit is', val);
this.DistanceUnit = val;
this.storage.get('SetRadious').then((val) => {
console.log('Your SetRadious is', val);
this.selectedRadious = val;
this.modalCreator();
})
.catch(err=>{
console.log('Your SetRadious dont exist: ' + JSON.stringify(err));
this.selectedRadious = 500;
this.modalCreator();
});
})
.catch(err=>{
console.log('Your distUnit dont exist: ' + JSON.stringify(err));
this.DistanceUnit = 'Meters';
this.storage.get('SetRadious').then((val) => {
console.log('Your SetRadious is', val);
this.selectedRadious = val;
this.modalCreator();
})
.catch(err=>{
console.log('Your SetRadious dont exist: ' + JSON.stringify(err));
this.selectedRadious = 500;
this.modalCreator();
});
});
}
modalCreator(){
let obj = {selectedRadious: this.selectedRadious, DistanceUnit: this.DistanceUnit};
let myModal = this.modalCtrl.create(SettingModalPage, obj);
myModal.onDidDismiss(data => {
console.log('modal value: '+data.DistanceUnit)
this.DistanceUnit = data.DistanceUnit;
this.selectedRadious = data.selectedRadious;
this.storage.set('distUnit', this.DistanceUnit);
this.storage.set('SetRadious', this.selectedRadious);
});
myModal.present();
}
코드를 잘 읽어보면 파라미터를 모두 획득하는 경우와 파라미터 중 하나가 실패하는 경우 모두 제가 처리했다는 것을 알게 될 것입니다.확인해 보시고 저에게 알려주세요.
Suraj의 답변 외에도 생성자에 스토리지 개체를 명시적으로 생성해야 한다는 것을 알게 되었습니다. 예를 들어, 옵션을 전달합니다.
this.storage=new Storage({name:"__mydb"});
따라서 "스토리지"를 구성요소 공급업체나 생성자에 포함하지 않았습니다.
suraj의 대답은 결정적인 해결책을 가져왔습니다.
저도 같은 문제가 있었습니다.app.module.ts에서 둘 다 다음을 지정했습니다.import {IonicStorageModule} from '@ionic/storage';그리고:import {Storage} from '@ionic/storage'문제를 해결하지 못했을 때 설치했습니다: npm install @ionic/storage.제거한 항목:import {Storage} from '@ionic/storage'app.vmdk.ts에서 다음만 남겼습니다.import {IonicStorageModule} from '@ionic/storage';그 후에 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/43199250/cant-resolve-all-parameters-for-storage
'programing' 카테고리의 다른 글
| 오류 TS2345: 'T' 유형의 인수를 'object' 유형의 매개 변수에 할당할 수 없습니다. (0) | 2023.06.27 |
|---|---|
| macOS 터미널에서 파일 이름을 일괄 변경하는 방법? (0) | 2023.06.27 |
| MVC 4 또는 5를 사용하는 MEF - Pluggable Architecture(2014) (0) | 2023.06.27 |
| 시스템에서 GetActiveObject에 대한 정의를 찾을 수 없습니다.런타임.Interop Services.C# 원수 (0) | 2023.06.22 |
| Aggregate의 투영에서 $elemMatch를 사용하는 방법은 무엇입니까? (0) | 2023.06.22 |
