2017-06-10 115 views
3

我有应该在子模块和父模块中使用的头文件,这是在父模块中导入和使用的,但是当尝试在子组件中导入和使用时,它显示错误。我的意思是如何为父母和孩子模块使用共同头文件如何在angular2中的子模块组件中使用父模块组件

+0

什么错误的类型? – hY8vVpf3tyR57Xib

+0

'组件是2个模块声明的一部分? – yurzui

+0

是未捕获(承诺):错误:类型HeaderComponent是2个模块声明的一部分:AppModule和ProviderModule!请考虑将HeaderComponent移动到导入AppModule和ProviderModule的较高模块。您还可以创建一个新的NgModule,该NgModule导出并包含HeaderComponent,然后将该NgModule导入到AppModule和ProviderModule中。 –

回答

5

你应该创建与要使用,出口这些组件,并在其他模块导入共享的模块组件的共享模块(父母和孩子为你的情况)。

共享模块:

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { SharedComponent1 } from "./SharedComponent1"; 
import { SharedComponent2 } from "./SharedComponent2"; 

@NgModule({ 
imports: [ 
    CommonModule 
], 
declarations: [ 
    SharedComponent1, 
    SharedComponent2 
], 
exports: [ 
    SharedComponent1, 
    SharedComponent2 
] 
}) 
export class SharedModule {} 

使用的共享模块:

import { NgModule }  from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
... 
import { SharedModule } from './SharedModule'; 

@NgModule({ 
imports: [ 
    CommonModule, 
    ... 
    SharedModule 
], 
declarations: [ 
    ... 
], 
providers: [ 
    ... 
] 
}) 
export class AppModule{} 
+0

答案是重要的。这是由角度错误消息建议的第二种解决方案。因为在第一个解决方案中,在导入其他两个模块的较高模块中共享组件的组件共享。 – Hao

+0

Anwser与角度github支持一样乏味......我们期望在父类或子模块中直接导入,而不是调用第三个模块的一些奇怪的反措施。错误消息表明我们有不必要的导入,所以我们必须删除一些行,而不是添加一个完整的模块。 – Eta

-1

如果您可以共享代码和指定的错误,那将会很棒。

根据我的理解,你基本上想要从父组件传递一些数据到它的子组件。

为此,您需要使用@Input将父参数传递给子对象。

Component Interaction between parent and child

让我知道,如果它可以帮助与否

+0

谢谢。我的意思是如何为孩子和父母模块使用通用头文件 –

+0

ok,那么我认为这个链接对你很有用。 – tom

+2

它描述了关于父母和孩子的组件,但我需要**模块的交互** –