有沒有辦法根據[email protected]中的環境變量條件地更改導入?我試圖以不需要更改代碼在客戶端代碼中導入服務的代碼方式,但是在需要時我可以指定一個構建標誌來交換模擬服務。angular-cli:使用環境變量的條件導入
有我試圖從this post使用模式:
文件結構:
MyService MyServiceMock.ts MyServiceReal.ts index.ts
而在你的index.ts,你可以有以下幾種:
import { environment} from '../environments/environment'; export const MyService = environment.mock ? require('./MyServiceMock').MyServiceMock: require('./MyServiceReal').MyServiceReal;
而在你的客戶端代碼,進口爲MyService:
import MyService from './myservice/index';
該頁面加載,我可以看到的依賴逐步執行代碼時得到注入,但也有編譯錯誤(我相信是打字稿錯誤)沿着Cannot find name 'MyService'
的線。
這種方法運行良好,但有一個缺點,即模擬服務包含在生產包中 – ENargit
如何在創建此提供程序時注入提供程序?通常我會從文件中導入服務,但在這種情況下,它可以是兩個文件中的一個。我如何知道Angular我想從提供的工廠函數中獲取提供者? – Valevalorin
@Valevalorin通過令牌('provide'),它是'MyService'。這就是你注入的。 –