如何在Angular 2中创建组件全局?

时间:2017-09-16 20:47:51

标签: angular typescript

我尝试将组件设为全局组件。但它给我一个错误:

Uncaught Error: Can't export directive LanguageComponent from SharedModule as it was neither declared nor imported!

因此,我将组件添加到shareModule中:

exports: [
    LoaderComponent,
    LanguageComponent
  ]

此外,我尝试将组件添加到core.module作为diclaration。它没有帮助。

ShareModule是:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LoaderComponent } from './loader/loader.component';
import {LanguageComponent} from "../language/language.component";
import {HiderPipe} from "../pipes/Hider";

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    LanguageComponent,
    LoaderComponent,
    HiderPipe
  ],
  exports: [
    LoaderComponent,
    LanguageComponent,
    HiderPipe

  ]
})
export class SharedModule { }

此模块仅在主core.module中导入为:

@NgModule({
  imports: [

    SharedModule
  ],

2 个答案:

答案 0 :(得分:2)

要使组件可用于导入SharedModule的模块,您必须将LanguageComponent添加到declarations的{​​{1}}字段和{{{} 1}} field。

SharedModule

如错误所述,您错过了将其添加到声明字段:

  

未捕获错误:无法从 SharedModule 导出指令 LanguageComponent ,因为它既不是声明也不是导入 < / p>

或者,如果exports已经是另一个模块的一部分(例如:@NgModule({ imports: [ // ... ], declarations: [ // ... LanguageComponent ], exports: [ // ... LanguageComponent ] }) export class SharedModule { // ... } ),则必须导入该模块,并且还可以重新导出该模块。 < / p>

要在另一个组件中使用该组件(例如LanguageComponent),您必须将LanguageModule添加到该模块的导入字段中。

AppModule

通过选择器在组件的模板中使用它。另请参阅docs上的功能模块部分。

答案 1 :(得分:1)

您还需要添加声明数组。

declarations:[LanguageComponent]
相关问题