2016-11-08 74 views
0

我是angular js 2 type腳本編程的新手。我試圖找到一種方法來訪問來自typescript的web.config的應用程序設置鍵。我不想在我的類型腳本中對數據進行硬編碼,因爲它們在不同的環境中有所不同。 TIA從Angular js 2 Typescript訪問web.config appsettings

+0

使用C#閱讀並通它給你的js。 – Shyju

+0

我創建了用於讀取web.config值的C#類,但我不知道如何將這些值傳遞給我的打字稿文件。 – pradeep

+0

由於TypeScript被轉換爲JavaScript,您將無法讀取配置文件。您可以使用Razor語法在腳本標記中注入適當的值,也可以編寫Powershell腳本以在構建過程中替換值。 http://stackoverflow.com/questions/38000449/how-to-get-key-from-web-config-in-typescript/42015399#42015399 –

回答

1

Typescript被編譯爲JavaScript,稍後在使用web.config文件的應用程序上下文中執行。因此,您將無法在TypeScript級別讀取配置。

你需要做的是使配置在運行時可用。換句話說,TypeScript生成的任何代碼都需要知道在頁面運行時可用的某個對象,它將爲其提供任何可能需要的配置。

有幾種方法可以做到這一點。

您可以讓您的JS代碼知道應始終存在於全局上下文中的對象(例如,當頁面運行時,JS中的appConfig)。然後您可以使用設置填充此對象。 asuming Razor示例:

var appConfig = []; 
appConfig.adminEmail = '@ConfigurationManager.AppSettings["adminEmail"]'; 

然後,您的TypeScript代碼可以在運行時依賴變量appConfig。

Alernatively,你能設備爲您的網頁來配置注入到你的打字稿生成的代碼的方式:

var adminEmail; 

function SetAdminEmail(val: string) 
{ 
    adminEmail = val; 
} 

function DisplayAdminEmail() 
{ 
    alert(adminEmail); 
} 
在你的頁面

然後:

<script type="text/javascript"> 
    SetAdminEmail('@ConfigurationManager.AppSettings["adminEmail"]'); 
    DisplayAdminEmail(); 
</script> 
+0

在這個例子中注入數據到主 - http:// plnkr.co/edit/ojaneZSSihUvkLmrpNkh?p=preview。挑戰是在index.html中閱讀appsettings配置數據。我們只是在沒有mvc的客戶端使用angular2。任何投入在此將不勝感激。 – Infoseeker