验证它是否属于此模块

时间:2018-06-22 00:10:21

标签: angular

我认为我不太了解Angular中组件的声明是如何工作的。我有两个模块AppNavigation,在NavigationModule中,我有几个组件,navigation-underlinenavigation-bar。当我尝试在navigation-underline组件中使用navigation-bar时,出现Verify that it is part of this module.错误

这是下面的代码

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [NavigationBarComponent, NavigationUnderlineComponent]
})
export class NavigationModule { }


## navigation-bar.html
<a style="font-size: 6em;" routerLink="/">Blah Blah</a>
<nav>
  <a routerLink="/">ABOUT</a>
  <a routerLink="/">RESUME</a>
</nav>
<app-navigation-underline></app-navigation-underline>

我也尝试在app模块中声明它,但是它不起作用,也不需要这样做,因为我只在NavigationModule中使用<app-navigation-underline>。不确定为什么我会收到错误消息。

编辑:好的,我似乎已经通过在NavigationModule中导出NavigationUnderlineComponent并将其导入AppModule来解决了这个问题,但我不太明白为什么需要它。

EDIT2 :实际上,我什至不需要导出它,我只需要在AppModule中声明它即可。为什么我需要在应用模块中声明此组件?

1 个答案:

答案 0 :(得分:0)

好吧,我知道了!

我真正想做的是仅在NavigationModule上下文中使用导航下划线。我是通过以下方式实现的...

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [NavigationBarComponent, NavigationUnderlineComponent],
  exports: [NavigationBarComponent]
})
export class NavigationModule { }

请注意,未导出NavigationUnderlineComponent。然后在AppModule中

@NgModule({
  declarations: [
    AppComponent,
    BlogIndexComponent,
    BlogPreviewCardComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    NavigationModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

这使我可以限制导航下划线仅在NavigationModule中使用