![](/img/trans.png)
[英]Angular2: How to resolve Component is not part of any NgModule …?
[英]Angular2 - Component Injection outside of NgModule
我是A2的新手,所以这个问题之前可能已被问到,但我使用了错误的术语,所以无法找到答案。
但是,我试图理解A2中的@Component
注入。 我可以告诉所有组件,无论嵌套如何,总是必须在根级别声明为NgModules文件的一部分(即此处声明的服务可通过所有组件访问)
@NgModule({
imports: [
...
],
declarations: [
1stComponent,
2ndComponent,
3rdComponent,
4thComponent <-- All components must be included here
],
providers: [
...
],
bootstrap: [
AppComponent
]
})
对我来说,这似乎有点奇怪。 如果您的ChildComponent
仅作为ParentComponent
一部分显示,该怎么办? 为什么ChildComponent
需要在被宣布NgModule
水平? 可以在需要时将此ChildComponent
声明为父组件的一部分吗? 在加载应用程序时,预先声明所有组件不会导致开销 - 它需要预先准备好一切吗? 或者只是NgModule
定义了构建的组件,而不是它们在运行时何时或如何显示?
在早期版本的Angular中,它以您期望的方式运行(即每个组件定义它自己的依赖项)。 在RC发布的时候,A2团队决定改变它。
正如Estus所提到的,你可以使用延迟加载。 有一个很好的参考指南, 这里显示了如何做到这一点。 (向下滚动到“Lazy Loading the Home module”部分)。
基本上Angular团队决定允许您将应用程序划分为不同的模块,从而在模块级别定义所有组件和指令依赖关系。 如果您真的担心初始负载过多,请将其分解为不同的模块。
同样在回答您的问题时,是的,通过在app.module.ts中的声明数组中定义组件,然后您将加载它们。 (因为你必须在文件中导入它们以便首先引用它们)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.