angularjs - 在AngularJS中从另一个模块导入组件的最佳方法是什么?
问题描述
我的AngularJS(v1.7)应用程序中有2个子模块,我们称它们为A和B。我正在尝试从模块B(componentB)导入一个组件(带有html模板和控制器),以在内部使用模块 A (componentA) 中组件的模板。
在阅读Reuse AngularJS Component in another Module (Dependency Injection)之后,我首先尝试通过将 componentB 指定为 componentA 的依赖项,然后在 componentA 的模板中使用它来做到这一点。
组件A.js
angular.module('A', ['componentB']).component('componentA', {...});
组件A.html
<div>
<componentB></componentB>
</div>
不幸的是,即使 componentB 被正确定义并在模块 B 中成功使用,这也不起作用。我还尝试通过修改app.js
如下所示将模块 B 指定为模块 A 的依赖项:
angular.module('A', ['B'])
.config(...
在这两种情况下,我都会得到一个
未捕获的错误:[$injector:modulerr]
我很难找到与 AngularJS 相关的类似问题/文章,而不是较新的 Angular。我对AngularJS也很生疏,所以任何帮助都将不胜感激,在此先感谢。
解决方案
这很简单:
angular.module("moduleB",[])
.component("componentB", {
template: "<div>This is Component B from Module B</div>"
});
angular.module("moduleA",["moduleB"])
<div ng-app="moduleA">
<component-b></component-b>
</div>
通过声明为依赖项来moduleA
导入组件。moduleB
moduleB
模块创建与检索
只有第一个模块声明应该指定依赖项。
错误
angular.module('moduleA', []) .controller('ctrl', /* ... */) angular.module('moduleA', ['moduleB']) .service('serviceA', /* ... */)
再次声明依赖会导致控制器被注销。
更好的
angular.module('moduleA', ['moduleB'])
angular.module('moduleA')
.controller('ctrl', /* ... */)
angular.module('moduleA')
.service('serviceA', /* ... */)
有关详细信息,请参阅
推荐阅读
- python - 解析 ping 命令输出
- ios - 以编程方式拨打手机号码,无需用户交互,也无需 iOS 中的用户确认提示
- c# - 应用 DataGridViewAutoFilterColumnHeaderCell 时,DataGridView 标头不会立即刷新
- python - OpenCV - Yolo - 计算特定区域中检测到的对象
- python - 使用谷歌云 APIi 将 Icecast 流式传输到文本
- r - 在 R 中表达变量
- hadoop - 如何从中心点终止 apache Impala 2.10 中正在运行的查询
- javascript - 在 Angular 4+ 中插入数据的最佳方法
- dask-distributed - 如何将任务分配给 Dask.Distributed 中的特定工作人员
- maven - Maven 测试不与外部 Jar 一起运行