What I'm using
- Angular
What I'm trying to do
- 我有一个我想在多个模块中重用的加载组件
What I've done
-
我创建了一个名为'loading-overlay'的新模块
-
在此模块中,我导出叠加组件
-
我将此模块添加到app.module
-
将组件添加到多个模块时,我收到以下错误:
类型LoadingOverlayComponent是2个模块声明的一部分:LoadingOverlayModule和ProjectsModule!请考虑将LoadingOverlayComponent移动到导入LoadingOverlayModule和ProjectsModule的更高模块 . 您还可以创建一个新的NgModule导出并包含LoadingOverlayComponent,然后在LoadingOverlayModule和ProjectsModule中导入该NgModule .
- 我试过从app.module中删除它并将其导入我需要的其他模块而没有太多运气 . 我必须遗漏一些明显的东西 .
Overlay Module
// Modules
import { NgModule } from '@angular/core';
// Components
import { LoadingOverlayComponent } from './loading-overlay.component';
@NgModule({
declarations: [
LoadingOverlayComponent,
],
imports: [
],
exports: [
LoadingOverlayComponent
],
providers: [ ],
})
export class LoadingOverlayModule { }
App Module
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
// Routing
import { AppRouting } from './routing/app-routing';
// Modules
import { ProjectsModule } from './projects/projects.module';
import { UserModule } from './user/user.module';
import { LoadingOverlayModule } from './loading-overlay/loading-overlay.module';
// Services / Providers
import { AuthService } from './user/auth.service'
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
AppRouting,
LoadingOverlayModule
],
providers: [
AuthService,
],
bootstrap: [AppComponent]
})
export class AppModule { }
Project Module
// Modules
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { LoadingOverlayModule } from '../loading-overlay/loading-overlay.module';
import { LoadingOverlayComponent } from '../loading-overlay/loading-overlay.component';
@NgModule({
declarations: [
LoadingOverlayComponent
],
imports: [
CommonModule,
RouterModule,
LoadingOverlayModule
],
providers: [ ],
})
export class ProjectsModule { }
任何帮助指出我愚蠢错过的将非常感谢:)
2 回答
去掉 :
LoadingOverlayModule
来自AppModule
LoadingOverlayComponent
来自ProjectsModule
而且:
import
LoadingOverlayModule
所需要的地方LoadingOverlayModule 是共享模块 . 它有自己的组件 . 现在要使用它的组件,你需要将 LoadingOverlayModule 导入到Project模块中 . 从项目模块的声明中删除 LoadingOverlayComponent .
项目模块声明需要另一个组件(比如ProjectComponent) . 当共享模块导入到您的项目模块中时,您可以使用选择器直接在ProjectComponent模板中使用overlay组件 . 希望这可以帮助 .