2015-12-09 67 views
3

我將現有的應用程序轉換爲Angular 2,客戶端代碼從服務器上的API(遙測設置和到其他API的URL)獲取其配置。我有一些服務依賴於該API返回的URL來構建數據請求。我如何獲取該服務的URL?在Angular2中加載「配置」

我最初的計劃是建立一個新的「配置」服務來處理數據。但是,當我想要訪問一個配置屬性時(我相信),你將不得不「訂閱」它來獲取值(至少,這正是我對其他服務所做的)。我還必須弄清楚如何鏈接響應,所以一旦返回配置服務的數據,實際服務請求的數據就會被觸發。

爲了解決這個問題,我可以在應用程序的構造函數中調用配置服務(這樣它會加載應用程序的啓動數據)並將數據轉儲到單例中。但是之後我需要確保事情取決於配置數據在加載之前不訪問屬性。

對於我應該採取的方法的任何建議?

回答

1

我採取了幾種不同的方法。

可能最簡單的是將配置值注入頁面服務器端,這樣您就可以開始瞭解它們,而不必擔心調用外部API的問題。

如果這不適合你,那麼你可以按照你的建議將這些屬性轉儲爲單例。但是,您需要將全局Promise放入該單例(如下面的ready字段),只要您檢索了值,就可以解決該問題。然後在使用任何這些值之前,將您的呼叫從全局配置中鏈接起來,例如,如下所示:

config.ready.done(function() { 
    // Use config properties 
}); 
+0

對於一個非常有效的問題的一個很好的答案。一段時間以來,我一直在面對同樣的問題,現在認識到配置服務並不是角色團隊想要配置的處理方式。但是,您是否有建議如何處理諸如服務網址和不同環境之類的內容?是否有一個可以在構建過程中進行替換的吞食任務? – Snorre

+0

@Snorre - 如果你使用node/gulp作爲工具集的一部分,這不是一個壞主意。例如,請參閱此吞嚥任務:https://github.com/outaTiME/gulp-replace-task。 –