0

我有一个组件,我想在我的应用程序的几个地方重用它。因此,我在我的核心模块中创建了一个带有新组件的模块。我得到的错误是'foo' is not a known element.

你可以在这里看到一个演示。您将看到我希望在其中共享模块的组件app/core/foo/foo.component.ts,该组件已导入到CoreModule. 你会看到FooComponent(使用选择器foo)在app/crisis/crisis-list.component.ts.

我已经阅读了 Angular 2 模块文档,无法解释为什么我不能FooComponent随心所欲地使用。

我错过了什么?

4

3 回答 3

1

你应该这样导入FooModuleCrisisModule

import { FooModule } from '../core/foo/foo.component';
...
@NgModule({
     imports: [CommonModule, CrisisRoutingModule, FooModule],
     ...
})
export class CrisisModule{}

每当您想使用任何组件时,只需导入包含组件声明的模块即可。

于 2016-12-02T13:12:43.107 回答
1

你必须选择:

1-将您的模块导入要使用它的模块中

2-在您要使用的模块中声明组件(而不是模块)。

但 :

模块方法更好,因为如果你在另一个模块中有一个模块,你不能在它们两个中声明你的组件,但你可以在它们两个中导入模块:!

于 2016-12-02T13:18:38.407 回答
1

要使通用组件在各种模块中工作,您必须通过指定以下选项来从特定模块中获取export该组件,以便可以共享ComponentexportsNgModuleComponent

exports: [CommonComponent] //it will contain the list of shareable Components

然后将该模块注入到另一个模块中,只要您想使用通用组件。

注意:即使您提到CommonComponentdeclartions模块的选项中存在,它也不允许在其他模块中直接使用那些Components 、Pipe's 、Directive',要使其工作,您必须导出应该作为可共享工作的特定组件。

于 2016-12-02T13:37:55.407 回答