有没有办法根据[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'。这就是你注入的。 –