如何在Angular 2中创建组件全局?
问题描述:
我试图使组件成为全局组件。但它返回我一个错误:如何在Angular 2中创建组件全局?
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
],
答
要使组件提供给其进口SharedModule
模块,你必须添加LanguageComponent
到您的SharedModule
的declarations
字段和exports
字段。
@NgModule({
imports: [
// ...
],
declarations: [
// ...
LanguageComponent
],
exports: [
// ...
LanguageComponent
]
})
export class SharedModule {
// ...
}
由于错误陈述,你错过了将其添加到该声明栏:
Uncaught Error: Can't export directive LanguageComponent from SharedModule as it was neither declared nor imported
或者,如果你LanguageComponent
已经是另一个模块的一部分(例如:LanguageModule
),你必须导入该模块,您也可以重新导出该模块。
要在其他组分,它是另一个模块的一部分使用的组件,例如AppModule
,您必须将SharedModule
添加到模块的进口领域。
@NgModule({
imports: [
// ...
SharedModule
],
declarations: [
// ...
],
exports: [
// ...
]
})
export class AppModule {
// ...
}
并通过选择器在组件的模板中使用它。请参阅docs上的功能模块部分。
如何将它添加到导出使它声明或导入?如何在共享模块的核心模块中声明它?你读过这条消息了吗?请给[mcve]。 – jonrsharpe
我尝试提供我拥有的所有信息:)现在我在问题中添加了ShareModule – OPV
请再次查看问题 – OPV