我试图以静态方法注入加载controller,但没有被注入。是否可以在静态方法中注入loadingController?
我尝试了以下代码:
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;
}
}
我尝试过的另一个代码是:
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
}
}
}
我不想在此类中拥有构造函数,因为我只想提供可以在项目中重复使用的静态方法。
我不确定这是否是最好的方法,但是您可以发送对injector
的参考并使用它来获取提供商的实例。例如
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);
}
}
以及在您要使用的组件中,它就像
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...');
}
}