[英]How to load components dynamically in Angular 2, without listing them in NgModule's declarations section
我们有一个 SPL,其中在index.html
中定义了一个 ngModule:
var module = ng.core.NgModule({
imports: [ng.platformBrowser.BrowserModule, ng.router.RouterModule, ng.material.MaterialModule],
declarations: [],
bootstrap: []
})
.Class({
constructor: function () {}
});
document.addEventListener('DOMContentLoaded', function () {
ng.platformBrowserDynamic
.platformBrowserDynamic()
.bootstrapModule(module);
});
如您所见,我们的NgModule
中的声明列表是空的。 例如,此代码由开发人员 A 完成,并与index.html
一起加载到页面中
在另一个地方,开发人员 B 创建了一个简单的组件:
var tasks = ng.core.Component({
selector: 'tasks',
template: '<div>list of tasks here<div>'
})
.Class({
constructor: function () {}
});
此代码通过用户的交互和路线更改延迟加载。
我们如何将这个组件包含在我们的模块中? 伪代码可能是:
module.AddComponent(tasks);
您可以尝试使用 forwardRef,但我不确定它是否有效,因为我没有任何代码可供测试。
var module = ng.core.NgModule({
imports: [ng.platformBrowser.BrowserModule, ng.router.RouterModule, ng.material.MaterialModule],
declarations: [ng.core.forwardRef(() => tasks],
bootstrap: []
})
.Class({
constructor: function () { }
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.