2016-06-07 64 views
5

在Angular 2應用程序或JavaScript應用程序中,通過外部化字符串常量的批准方式是什麼?我的意思是像Java中的.properties文件,其中存儲後端連接屬性。Angular 2外部化(屬性文件)

據我所知,JavaScript不支持輕鬆地從客戶端讀取文件。我目前的解決方案是使用注入服務類,它將鍵值對存儲爲對象屬性。然後,我只是將服務注入其他需要這些值的服務中。這是合理的方法,還是JavaScript/A2提供了更統一的方式來處理值注入?

+1

也有一些是工作正在進行由角團隊發佈「很快」。 –

回答

0

我認爲要做的是正確的。

您可以在您的請求完成後異步引導。下面是一個示例:

var app = platform(BROWSER_PROVIDERS) 
    .application([BROWSER_APP_PROVIDERS, appProviders]); 

var service = app.injector.get(ConfigService); 

service.getConfig().flatMap((config) => { 
    var configProvider = new Provider('config', { useValue: config }); 
    return app.bootstrap(appComponentType, [ companiesProvider ]); 
}).toPromise(); 

看到這個問題:

我看到另一種方法,如果你能夠在更新index.html頁面(主入口點)服務器端。下面是一個示例:

<script> 
    var params = {"token": "@User.Token", "xxx": "@User.Yyy"}; 
    System.import('app/main').then((module) => { 
    module.main(params); 
    }); 
</script> 

看到這個問題:

你也可以註冊一個APP_INITIALIZER提供商這樣的:

provide(APP_INITIALIZER, { 
    useFactory: (service:ConfigService) =>() => service.loadConfig(), 
    deps:[ConfigService, HTTP_PROVIDERS], 
    multi: true}), 

看到這個問題了更多細節:

+1

如此冗長的執行最簡單的任務。 Angular 2的代碼似乎最終難以維護,我希望它們能夠隨着時間的推移調整慣例而不是配置方法 –

+0

是的,或許這將會更容易使用像ng常量這樣的工具來解決打包問題...... –