我有应该在子模块和父模块中使用的标头。这是在父模块中导入和使用的,但是当尝试在子组件中导入和使用它时显示错误。我的意思是如何对父模块使用公共标头儿童模块
未捕获(承诺):错误:
Type HeaderComponent是其中的一部分 2个模块的声明:AppModule和ProviderModule!请 考虑将HeaderComponent移动到更高的导入模块 AppModule和ProviderModule。
您还可以创建一个导出和包含的新NgModule 然后HeaderComponent在AppModule和中导入NgModule ProviderModule。
答案 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
如果有帮助,请告诉我