2017-03-24 3 views
2

グローバル変数を格納するプロバイダ(ionic 2)を作成しようとしています($ rootScopeを置き換える)。angle2サービスを正しく注入/インポートしていますか?

しかし、私はまだエラーが発生します(./MyAppクラスMyAppのエラー - インラインテンプレート:18:0 :!?)

ストレージ用ませプロバイダは、あなたが私のコードをきれいに役立つことはできません

おかげ

グローバル-vars.ts:

import { Injectable } from '@angular/core'; 
import { Events } from 'ionic-angular'; 
import { Storage } from '@ionic/storage'; 

/* 
    Generated class for the GlobalVars provider. 

    See https://angular.io/docs/ts/latest/guide/dependency-injection.html 
    for more info on providers and Angular 2 DI. 
    */ 
    @Injectable() 
    export class GlobalVars { 

    _vars: Array<{name: string, value: any}>; 

    constructor(
     public events: Events, 
     public storage: Storage 
    ) { 
     console.log('Hello GlobalVars Provider'); 
    } 

    varExist(varName: string): boolean { 
     // return (this._vars.indexOf(varName) > -1); 
     return false; 
    }; 

    addGlobalVar(varName: string, value: any): void { 
     this._vars.push({ 
      name: varName, 
      value: value 
     }); 
    }; 

    removeGlobalVar(varName: string): void { 

    }; 

    } 

コンポーネント:

import { Component } from '@angular/core'; 
import { NavController, NavParams } from 'ionic-angular'; 
import { ComparePage } from '../compare/compare'; 
import { ViewChild } from '@angular/core'; 
import { Slides } from 'ionic-angular'; 
import { LocalStorageService } from 'angular-2-local-storage'; 
import { GlobalVars } from '../../providers/global-vars'; 


@Component({ 
    selector: 'page-weightlevel', 
    templateUrl: 'weightlevel.html', 
    providers: [GlobalVars] 
}) 
export class WeightlevelPage { 

    name: string; 

    constructor(
     public navCtrl: NavController, 
     public navParams: NavParams, 
     private localStorageService: LocalStorageService, 
     public globalVars: GlobalVars 
    ) { 
     console.log("Executing Weightlevel.ts"); 
     this.name = 'Max'; 
     // this.globalVars.addGlobalVar("isWebIntegration", false); 
    } 

    @ViewChild(Slides) slides: Slides; 

    ionViewDidLoad() { 
     console.log('ionViewDidLoad WeightlevelPage'); 
    } 
    // showWeightLevel() { 
    // this.navCtrl.push(WeightlevelPage); 
    // } 
    // showCompare() { 
    // this.navCtrl.push(ComparePage); 
    // } 
    goToSlide() { 
     this.slides.slideTo(2, 500); 
    } 
} 

app.module.ts:

import { NgModule, ErrorHandler } from '@angular/core'; 
import { Http } from '@angular/http'; 
import { TranslateModule, TranslateStaticLoader, TranslateLoader } from 'ng2-translate/ng2-translate'; 
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 
import { LocalStorageModule } from 'angular-2-local-storage'; 
import { MyApp } from './app.component'; 
import { WeightlevelPage } from '../pages/weightlevel/weightlevel'; 
import { RecovolPage } from '../pages/recovol/recovol'; 
import { ComparePage } from '../pages/compare/compare'; 
import { GlobalVars } from '../../providers/global-vars'; 


export function createTranslateLoader(http: Http) { 
    return new TranslateStaticLoader(http, 'assets/i18n', '.json'); 
} 


@NgModule({ 
    declarations: [ 
    MyApp, 
    WeightlevelPage, 
    RecovolPage, 
    ComparePage 
    ], 
    imports: [ 
    IonicModule.forRoot(MyApp), 
    TranslateModule.forRoot(
     { 
     provide: TranslateLoader, 
     useFactory: (createTranslateLoader), 
     deps: [Http] 
     } 
    ), 
    LocalStorageModule.withConfig({ 
     prefix: '', 
     storageType: 'localStorage' 
    }) 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    WeightlevelPage, 
    RecovolPage, 
    ComparePage 
    ], 
    providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, GlobalVars] 
}) 
export class AppModule {} 
+0

としてあなたsystem.js設定ファイルに

を参照を追加し、あなたのAppModuleでIonicStorageModuleをインポートしたどのバージョンを使用していますか? – Mehari

+0

角度2.0.0以上であれば、提供された答えを考えてください – Mehari

+0

イオン性2.2.0を使用していますが、角型を取得する方法がわかりません – Louis

答えて

0

モジュールデコレータの "プロバイダ" セクションにGlobalVarsを含めるようにしてください:

import { GlobalVars } from 'somehere'; 

@NgModule({ 
    providers: [GlobalVars] 
}) 
export class AppModule {} 
+0

これはこのレベルにある必要がありますか? – Louis

+0

Angular docsには同様の注射可能な例があります。このWebページをご覧ください:https://angular.io/docs/ts/latest/guide/dependency-injection.html#!#logger-service .. – birwin

0

がインストールさを確認してくださいコマンドを使用したスト​​レージ

npm install --save @ionic/storage 

imports: [ 
    ............. 
    IonicStorageModule.forRoot() 
    ], 
+0

はいnpmのインストールを確認しましたが、私はapp.module.tsの宣言を持っています(私は質問を編集しました) – Louis

+0

@Louisはあなたの設定ファイルとメインmodule.tsを質問に追加します – Aravind

+0

設定ファイルを更新するには? – Louis

関連する問題