【发布时间】:2020-07-06 00:42:31
【问题描述】:
我正在尝试构建一个提供程序(离子 2)来存储全局变量(以替换 $rootScope。
但我仍然收到错误:
./MyApp 类 MyApp 中的错误 - 内联模板:18:0 原因是:没有存储提供程序!
如何清理代码?
全局变量.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 {}
【问题讨论】:
-
使用的是什么版本?
-
如果您使用 angular 2.0.0 及以上版本,请考虑提供的答案
-
我用的是ionic 2.2.0,不知道怎么获取angular版本
-
ionic 2.2 使用更新日志github.com/driftyco/ionic/blob/master/CHANGELOG.md中的 angular 2.4@
-
app.module.ts的代码?