繁体   English   中英

Angular2 - 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM