Sie könnten eine BasePage
erstellen und alle gemeinsamen Code setzen dort.
import { Component, Injector } from '@angular/core';
import { AlertController, ...} from 'ionic-angular';
@Component({ selector: '', template: '<span></span>' })
export class BasePage {
private _alertCtrl: AlertController;
private _toastCtrl: ToastController;
constructor(public injector: Injector) { }
// Get methods used to obtain instances from the injector just once
// ----------------------------------------------------------------
// AlertController
public get alertCtrl(): AlertController {
if (!this._alertCtrl) {
this._alertCtrl = this.injector.get(AlertController);
}
return this._alertCtrl;
}
// ToastController
public get toastCtrl(): ToastController {
if (!this._toastCtrl) {
this._toastCtrl = this.injector.get(ToastController);
}
return this._toastCtrl;
}
// ...
// Helper methods
// ----------------------------------------------------------------
public showAlertMessage(message: string): void {
let alert = this.alertCtrl.create({ ... });
alert.present();
}
public showToastMessage(message: string): void {
let toast = this.toastCtrl.create({ ... });
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
}
}
Der Schlüssel ist, dass die BasePage
eine Instanz des Injektors aus der Unterklasse empfängt, so könnten Sie eine Instanz erhalten, die Sie von ihm brauchen (wie die AlertController
Instanz, die Sie eine Warnmeldung zeigen müssen). Bei Verwendung der Get-Methoden wird jede Instanz nur einmal vom Injektor abgerufen.
Und dann in allen Seiten Ihrer App:
import { Component, Injector } from '@angular/core';
import { BasePage } from '../path/to/base';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage extends BasePage {
constructor(public injector: Injector) {
super(injector);
}
public someMethod(): void {
// You can use the methods from the BasePage!
this.showAlertMessage('Your message...');
}
public someOtherMethod(): void {
this.showToastMessage('Another message');
}
}
Auf diese Weise ist super einfach einige weitere Hilfsmethoden hinzuzufügen.
Warum setzen Sie 'showInvalidTokenAlert' nicht in' HandleStorageService'? –
Dieser Service ist nur für den Umgang mit Storage-bezogenen Dingen. Das ist der Grund dafür. @ NitzanTomer – Sampath
ist es ionischen 2 insbesondere? wenn ja, könnten Sie nur einen Anbieter mit dieser Funktion injizieren .. –