在Angular 2中注入静态方法中的加载controller



我试图以静态方法注入加载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...');
    }    
}

相关内容

  • 没有找到相关文章

最新更新