2017-09-25 276 views
0

我想創建一個名爲「translate」的全局函數。據我所知,我可以在app.module.ts文件中定義全局變量及其值。所以我嘗試下面的代碼:Ionic 3中的全局函數

export function translate(string) { 
    // i am not sure if it would make a difference if i would use var 
    let ts = new TranslateService(); 
    return ts.get(string).subscribe(res=>{ 
    return res; 
    }); 
} 

所以,也許我嘗試使用了錯誤的類,也許錯誤是其他地方。我使用ngx-translate Module(它很好用)。而不是總是聲明使用「TranslateService」(在需要翻譯的每個類中),我想要一個全局函數,我可以通過函數訪問翻譯(我不想調用另一個類.. )。你可以看到我喜歡在鏈接最後的全局函數中使用的代碼(ngx-translate

在此先感謝。

全球對我來說意味着項目中的任何地方都可以使用某種東西。

+0

注意:示例代碼不起作用 –

+0

它更好,如果您可以使用提供程序 –

回答

1

我認爲這是一個非常糟糕的主意,即使如果你得到它的工作以某種方式通過一些凌亂的黑客那不是這樣打算工作的方式。

TranslateService已經是一種服務,您可以在您需要的每個課程中注入該服務。使用Angulars依賴注入注入服務是使用它的預期方式。如果您擔心最終會有多種翻譯服務 - 不用擔心,Angulars依賴注入系統會照顧到這一點。

我想你想這樣做,因爲你總是必須在構造函數中編寫public translate: TranslateService。但是,如果您在app.module中導出函數,則必須在班級中再次導入該函數,因此您每次都必須編寫import { translate } from 'path/to/app.module/translate';