Angular 2+如何在对等模块中引用组件

时间:2019-05-19 18:30:05

标签: angular angular-components angular-module cross-reference

Angular 2-7 :(下面的资料):我有带有组件a和b的SectionA模块。 SectionA的对等项是具有组件ba和bb的SectionB模块。 SectionA和SectionB的父级都称为all-sections.module.ts。 在app.module中,我仅引用“ all-sections模块”,并且可以毫不费力地显示A节和B节各个组件的工作情况(如下所示)。
组件“ a”可以在其html中使用“ b”,但我无法从SectionB中引用它的堂兄“ bb”。问题:如何从“ a”显示“ bb”。

enter image description here

SectionA模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AComponent} from './a/a.component';
import { BComponent } from './b/b.component';

@NgModule({
  declarations: [
    AComponent,
    BComponent
  ],
  imports: [
    CommonModule
  ],
  exports: [
    AComponent,
    BComponent
  ]
})
export class SectionAModule { }

SectionB模块(非常明显)

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BaComponent } from './ba/ba.component';
import { BbComponent } from './bb/bb.component';

@NgModule({
  declarations: [
    BaComponent,
    BbComponent
  ],
  imports: [
    CommonModule
  ],
  exports: [
    BaComponent,
    BbComponent
  ]
})
export class SectionBModule { }

所有部分模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {SectionAModule} from '../SectionA/SectionA.module';
import {SectionBModule} from '../SectionB/SectionB.module';

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    SectionAModule,
    SectionBModule
  ],
  exports: [
    SectionAModule,
    SectionBModule
  ]
})
export class AllSectionsModule { }

app.module仅导入AllSectionsModule,然后app.component.html如下所示:

<div>
  <app-a></app-a>
  <app-b></app-b>
  <app-ba></app-ba>
  <app-bb></app-bb>
</div>

运行应用程序按预期方式工作:

enter image description here

但是我找不到从“ a”引用“ bb”的方法,例如:

enter image description here

希望当我刚叫“ a”时得到类似的信息。这是'a.html':

<p>
  a works!  and
  <app-b></app-b> from within Section A  component a WORKS

BUT:
  <app-bb></app-bb>
  This won't work no matter how I try to reference it.
</p>

预先感谢! 卡盘

2 个答案:

答案 0 :(得分:1)

是的,您可以从“ A节”到“ B节”中引用组件。在SectionB.module.ts中声明组件时。

如要在声明数组中所做的那样,在导出数组中添加要共享的组件“ bbComponent”。

例如:出口:['bbComponent']。

现在在SectionA.module.ts中导入 SectionB 模块。

之后,您将可以使用该组件。那不是一个好习惯。

相反,请为您希望在不同模块中使用的组件创建一个共享模块。这样可以避免循环引用问题。

希望有帮助。

答案 1 :(得分:0)

如果要使用另一个模块中的组件,则需要从包含该组件的模块中导出该组件,然后将此模块导入到您的模块中:您可以找到更多信息here