在角度2中以静态方法注入LoadingController

时间:2017-02-24 09:53:50

标签: angular typescript ionic2

我试图在静态方法中注入LoadingController,但它没有被注入。是否可以在静态方法中注入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;
    }
}

我不想在这个类中使用构造函数,因为我只想提供可跨项目重用的静态方法以用于常见任务。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是最佳方法,但您可以发送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...');
    }    
}