typescript - Inyectando LoadingController en método estático en angular 2
He intentado inyectar LoadingController en un método estático, pero no se está inyectando. ¿Es posible inyectar LoadingController en un método estático?
He probado el siguiente código:
import { LoadingController, Loading } from 'ionic-angular';
import { Inject } from '@angular/core'
export class Commons {
@Inject(LoadingController)
static showLoadingMask( loadingText: string ) {
//Getting Null
let loadCtrl: LoadingController;
}
}
El otro código que he intentado es:
import { LoadingController, Loading } from 'ionic-angular';
import { Inject } from '@angular/core'
export class Commons {
static showLoadingMask( loadingText: string, @Inject(LoadingController) loadCtrl ) {
//Getting Null
if( loadCtrl ) {
//Null
} else {
//Always executing else
}
}
}
No quiero tener un constructor en esta clase, ya que solo quiero proporcionar métodos estáticos que sean reutilizables en el proyecto para tareas comunes.
Respuesta #1
No estoy seguro de si esta es la mejor manera de hacerlo, pero puedes enviar una referencia al injector y usarla para obtener las instancias de los proveedores. Por ejemplo
import { LoadingController, Loading } from 'ionic-angular';
import { Injector } from '@angular/core'
export class Commons {
static showLoadingMask(injector: Injector, loadingText: string ) {
let loadCtrl: LoadingController = this.injector.get(LoadingController);
}
}
Y en el componente donde quieras usarlo, sería así
import { Component, Injector } from '@angular/core';
// ...
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(..., public injector: Injector) { ... }
public yourMethod(): void {
Commons.showLoadingMask(this.injector, 'Loading...');
}
}
