簡體   English   中英

在角度2中以靜態方法注入LoadingController

[英]Injecting LoadingController in static method in angular 2

我試圖在靜態方法中注入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;
    }
}

我嘗試過的其他代碼是:

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...');
    }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM