Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angular2的子模块组件中使用父模块组件_Angular_Components_Angular2 Template - Fatal编程技术网

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

如何在angular2的子模块组件中使用父模块组件,angular,components,angular2-template,Angular,Components,Angular2 Template,我有应该在子模块和父模块中使用的标题。该标题已导入并在父模块中使用,但当尝试导入并在子组件中使用时,它显示错误。我的意思是如何为父模块和子模块使用公共标题 未捕获(承诺中):错误: 类型标头组件是 两个模块的声明:AppModule和ProviderModule!请 考虑将HealE元部件移动到导入的更高模块 AppModule和ProviderModule 您还可以创建一个新的NgModule,该模块导出并包含 HeaderComponent然后在AppModule中导入该NgModule,然

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

未捕获(承诺中):错误:

类型标头组件是 两个模块的声明:AppModule和ProviderModule!请 考虑将HealE元部件移动到导入的更高模块 AppModule和ProviderModule

您还可以创建一个新的NgModule,该模块导出并包含 HeaderComponent然后在AppModule中导入该NgModule,然后 前表皮模块


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

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

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


让我知道,如果有帮助或没有帮助

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

共享模块:

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{}
使用共享模块:

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{}
我已经修改了他的答案

您应该导出要在子模块中使用的父模块的组件。然后在子模块中导入父模块

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

子模块(导入父模块):


什么类型的错误?
组件是2个模块声明的一部分
?是未捕获(承诺):错误:类型头组件是2个模块声明的一部分:AppModule和ProviderModule!请考虑将HealE元器件移动到导入AppMead和PosivMead模块的更高模块中。您还可以创建一个新的NgModule,该模块导出并包含HeaderComponent,然后在AppModule和ProviderModule中导入该NgModule。编辑:错误消息添加回问题中,以确保可读性谢谢。我的意思是如何为子模块和父模块使用公共标头。它描述了父组件和子组件。但我需要模块Interaction基本上您希望如果父模块中的某些头更改,那么它将自动开始在子模块中反映?感谢您的努力。是的,我尝试在子模块中导入该父模块。它显示错误。它不接受事件发射器可能是您要找的。答案离题了。这是角误差信息建议的第二种解决方案。由于第一个解决方案是在更高的模块中共享组件,导入其他两个模块共享使用该组件。。。我们期望在父模块或子模块中直接导入,而不是调用第三个模块的奇怪计数器。错误消息表明我们有一个不必要的导入,所以我们必须删除一些行,而不是添加整个模块。我认为这是一个角度缺陷,这使我想避免使用父模块和子模块,而只使用常规模块,以便我可以导入任何我需要的。父子模块到底有什么意义?路由?无论如何,我们应该有单独的模块进行路由。即便如此,将模块结构耦合到路由结构似乎是个坏主意。你不能重复使用任何东西。这个答案正是我使用“初学者包”构建模块所需要的方法。我做了一个共享模块来导出我的页眉和页脚组件,所以在我所有的子组件模块中,我可以只导入这个模块。