我有一个 Angular 2 应用程序 (RC7),它以单个组件开始,但很快以各种不同(有时完全不相关)的方式在整个项目中使用。
因此,单个NgModule引导所有组件似乎是一个糟糕的想法,并且会产生大量膨胀。我正在努力寻找一种拥有多个模块的方法(模块 A 将包含组件 A,模块 B 将包含组件 B 等),并且仍然允许在单个页面上引导多个 A2 应用程序。
在实践中,我想要实现的是:
第 1 页引导模块 A -这有效。
第 2 页引导模块 B -这有效。
第 3 页引导模块 A 和模块 B -这不起作用。
索引.html
<script src="/angular2/node_modules/zone.js/dist/zone.js"></script>
<script src="/angular2/node_modules/reflect-metadata/Reflect.js"></script>
<script src="/angular2/node_modules/systemjs/dist/system.src.js"></script>
<script src="/angular2/systemjs.config.js"></script>
<script type="text/javascript">
System.import('appOne').catch(function(err){ console.error(err); });
System.import('appTwo').catch(function(err){ console.error(err); });
</script>
systemjs.config.js
(function (global) {
System.config({
paths: {
'npm:': '/angular2/node_modules/'
},
map: {
appOne: '/angular2/',
appTwo: '/angular2/',
},
packages: {
appOne: {
main: './appOne.main.js',
defaultExtension: 'js'
},
appTwo: {
main: './appTwo.main.js',
defaultExtension: 'js'
},
}
});
})(this);
AppOne 和 AppTwo 的模块只是简单地引导相关组件(componentOne 和 componentTwo)。但是,两者不会同时呈现在同一页面上。我在控制台中没有错误,但是 systemjs.config.js 文件中最后列出的包是唯一要加载的包。
谁能明白为什么它可能不起作用?或者也许推荐另一种方式来构建我的模块。我宁愿不列出一个包含所有组件、服务等的父模块——这似乎违背了 Angular 2 嵌套组件树的要点,并最终会成倍地影响页面加载时间。
提前致谢。