Angular 角形2罐';在我的功能模块中找不到声明的组件

Angular 角形2罐';在我的功能模块中找不到声明的组件,angular,angular2-components,Angular,Angular2 Components,我很难让模块在Angular 2中工作。 我已经创建了一个示例来演示这个问题。 在plunk中,您将看到我有app.module。此模块导入app-common.module,其中包含用于显示页面标题的组件。顶级组件app.component的模板包含此组件的选择器。 以下是app.common.module: @NgModule({ 导入:[CommonModule,FormsModule], 声明:[PageHeaderComponent] }) 导出类AppCommonModule{}

我很难让模块在Angular 2中工作。 我已经创建了一个示例来演示这个问题。 在plunk中,您将看到我有app.module。此模块导入app-common.module,其中包含用于显示页面标题的组件。顶级组件app.component的模板包含此组件的选择器。 以下是app.common.module:

@NgModule({
导入:[CommonModule,FormsModule],
声明:[PageHeaderComponent]
})
导出类AppCommonModule{}
以下是app.module:

@NgModule({
导入:[AppCommonModule,BrowserModule],
声明:[AppComponent],
引导:[AppComponent]
})
导出类AppModule{}
当应用程序运行时,它抛出一个错误,“ref pageheader”不是已知元素。如果我在app.module中声明该组件,它就可以正常工作。
那么,为什么我不能在导入到主app.module的模块中声明此组件?这样做的时候,我似乎找不到它。我做错了什么?我遗漏了什么吗?

我想你应该像这样导出它:

@NgModule({
导入:[CommonModule,FormsModule],
声明:[PageHeaderComponent],
导出:[PageHeaderComponent]
})
导出类AppCommonModule{}
这样其他组件就可以使用该组件

否则,
PageHeaderComponent
将仅在
AppCommonModule

另见

我们导出ContactComponent,以便其他模块导入 ContactModule可以将其包含在其组件模板中

默认情况下,所有其他声明的联系人类都是私有的

导出其他模块中的组件应包含的可声明类 能够在模板中引用。这些是你们的公开课。 如果不导出类,它将保持私有,仅对其他类可见 在此模块中声明的组件


这个问题已经得到了回答,但对于其他有这个问题的人来说,这对我来说是一个不同的解决方案

检查父组件在哪个模块中声明,因为在我的例子中,父组件是在我们的Angular项目的共享模块中声明的。事实证明,我的子组件需要与父组件一起在共享模块中声明才能正常工作。我将我的组件从模块声明中取出,并将其放入共享模块的声明中,就像父组件一样,它可以工作

关键是:我使用Angular CLI生成组件,但CLI将组件添加到错误的模块声明中,然而Angular CLI这样做并非完全错误,因为它实际上是组件的逻辑文件目录和组件的逻辑模块

在我的例子中,父组件被用作路由组件。 结果可能是我的父组件需要它自己的NgModule,但我还不确定


希望这有帮助。

太棒了!我完全错过了!谢谢,不客气!您还可以查看material2的源代码。这是一个很好的起点你帮了大忙!这么简单,但我错过了!再次感谢。这是我的问题。非常感谢。