angular - Angular 模块不适用于 esnext 模块配置
问题描述
我目前正在逐步更新遗留代码库,并且遇到了模块/命名空间的一些问题。
我们有一个models.ts
看起来像这样的文件
angular.module('models', ['ngResource']);
import './company';
在里面company.ts
,我们声明了一个带有工厂函数的命名空间ACCompany
,然后我们注册到'models'
模块中。
namespace Company {
....
export function ACCompany(
$log: ng.ILogService,
$q: ng.IQService,
$resource: ng.resource.IResourceService,
conf: IACConf,
) { ... }
}
angular.module('models').factory('CompanyAPI', Company.ACCompany);
这曾经可以正常工作,但最近我将module
密钥更改tsconfig
为“esnext”,将moduleResolution
密钥更改为“节点”。突然间,“模型”模块似乎不可用。
哈普?
解决方案
问题基本上是 es6 模块是静态分析的。所以 in 中的代码在company.ts
.in 中的代码之前被执行models.ts
。
我的解决方案是创建另一个导入models.ts
(第一个)和company.ts
(第二个)的文件,然后更改modles.ts
为angular.module('models', ['ngResource']);
语句
推荐阅读
- r - 如何将刻度标记添加到 RasterImage Plot?
- c# - 带有任务的 Xamarin 表单切换
- onclick - 动态 TImage 的 OnClick 事件
- go - 如何通过调用结构方法来启动/停止功能
- javascript - 将 Javascript 字符串转换为名称/值对对象
- ios - 安装react-native-custom-segmented控件,react-native项目需要安装ios框架
- python - 绘制非线性决策边界
- optimization - 在 GAMS 中增加或减少一段时间内的变量或参数
- android - 在 doOnComplete android RXJava 之后 LiveData setValue 不起作用
- python - Django没有加载静态CSS文件