如何在angular2中的子模块组件中使用父模块组件

时间:2017-06-10 08:13:12

标签: angular components angular2-template

我有应该在子模块和父模块中使用的标头。这是在父模块中导入和使用的,但是当尝试在子组件中导入和使用它时显示错误。我的意思是如何对父模块使用公共标头儿童模块

  

未捕获(承诺):错误:

     

Type HeaderComponent是其中的一部分   2个模块的声明:AppModule和ProviderModule!请   考虑将HeaderComponent移动到更高的导入模块   AppModule和ProviderModule。

     

您还可以创建一个导出和包含的新NgModule   然后HeaderComponent在AppModule和中导入NgModule   ProviderModule。

3 个答案:

答案 0 :(得分:18)

您应该创建一个包含您要使用的组件的共享模块,导出这些组件,然后在其他模块中导入共享模块(对于您的案例,可以导入父模块和子模块)。

共享模块:

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{}

答案 1 :(得分:0)

我修改了ST7的回答。

你应该导出父模块的组件,你想在子模块中使用。然后在子模块中导入父模块。

父模块(导出共享组件):

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 ParentModule {}

子模块(导入父模块):

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

@NgModule({
imports: [
    CommonModule,
    ...
    ParentModule
],
declarations: [
    ...
],
providers: [
    ...
]
})
export class ChildModule{}

答案 2 :(得分:-4)

如果您可以共享代码和指定的错误,那就太棒了。

根据我的理解,您基本上希望将一些数据从父组件传递到其子组件。

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

Component Interaction between parent and child

如果有帮助,请告诉我