Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
如何在Angular中引用和使用来自另一个模块的组件?_Angular_Typescript_Module_Components - Fatal编程技术网

如何在Angular中引用和使用来自另一个模块的组件?

如何在Angular中引用和使用来自另一个模块的组件?,angular,typescript,module,components,Angular,Typescript,Module,Components,在我的app.component.html中,我为一个自定义组件添加了新标记,因此它看起来如下所示。应用程序崩溃,错误表明应用程序主菜单栏无法识别为此模块的一部分,并要求我验证它是否存在。虽然不是,但我还是想通过导入另一个模块来使用它 <div> <app-main-menu-bar></app-main-menu-bar> <router-outlet></router-outlet> </div> 我还确保向应

在我的app.component.html中,我为一个自定义组件添加了新标记,因此它看起来如下所示。应用程序崩溃,错误表明应用程序主菜单栏无法识别为此模块的一部分,并要求我验证它是否存在。虽然不是,但我还是想通过导入另一个模块来使用它

<div>
  <app-main-menu-bar></app-main-menu-bar>
  <router-outlet></router-outlet>
</div>
我还确保向应用程序模块宣布菜单模块

import { NavModule } from "./nav/nav.module";
import { AppComponent } from "./app.component";
...
@NgModule({
  declarations: [AppComponent],
  imports: [NavModule, ...],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
组件本身是一个角度组件,具有预期的选择器

import { Component, OnInit } from "@angular/core";
@Component({
  selector: "app-main-menu-bar",
  templateUrl: "./main-menu-bar.component.html",
  styleUrls: ["./main-menu-bar.component.scss"]
})
export class MainMenuBarComponent implements OnInit {
  constructor() { }
  ngOnInit() { }
}
它驻留在一个模块中,该模块将它导出到以下位置

import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { MainMenuBarComponent } from "./main-menu-bar/main-menu-bar.component";

export { MainMenuBarComponent } from "./main-menu-bar/main-menu-bar.component";

@NgModule({
  imports: [CommonModule],
  declarations: [MainMenuBarComponent]
})
export class NavModule { }

我知道我遗漏了一些东西,但我无法想象会遗漏什么。

您需要在NavModule内部添加
主菜单组件

@NgModule({
  imports: [CommonModule],
  declarations: [MainMenuBarComponent],
  exports : [MainMenuBarComponent]
})

是的,它能工作,所以绿色检查这个。然而,我很困惑,为什么我必须进行这种导出,而当涉及到其他模块中的组件时,我却不这样做——这些组件是我路由进来的。当我为导航栏设置路由器时,它工作了(命名为路由器,也是默认路由器)。我希望声明部分能够做到这一点。或者是这样的:当路由时,使用声明,当使用直线时,使用导出?
@NgModule({
  imports: [CommonModule],
  declarations: [MainMenuBarComponent],
  exports : [MainMenuBarComponent]
})