Общий модуль Angular экспортирует компонент, импортированный другим модулем
У меня 3 модуля. Давай назовем ихStoreModule
, BookModule
, PaperModule
. В магазине продаются книги, поэтому в магазине используются книги. Книга состоит из бумаги, поэтому используется бумага, точно такая же, как в магазине. В магазине также используется бумага. Вот и проблема! Теперь реальный пример этого в angular:
paper.module.ts
import { NgModule } from '@angular/core';
import { PaperComponent } from './paper.component';
@NgModule({
declarations: [
PaperComponent
],
exports: [
PaperComponent
]
})
export class PapaerModule { }
Пока все хорошо, угловых ошибок нет.
book.module.ts
import { NgModule } from '@angular/core';
import { BookComponent } from './book.component';
import { PaperModule } from './paper.module'
@NgModule({
declarations: [
BookComponent
],
imports: [
PaperModule
],
exports: [
BookComponent
]
})
export class BookModule { }
Вот, book.component.html
выглядит так:
<app-paper></app-paper>
По-прежнему все нормально, ошибок нет. Но когда мы хотим использовать оба (не уверен, что нам понадобятся оба, возможно, нам понадобится только бумага, может быть, книга тоже):
store.module.ts
import { NgModule } from '@angular/core';
import { BookModule } from './book.module'
import { PaperModule } from './paper.module'
@NgModule({
imports: [
BookModule,
PaperModule
]
})
export class StoreModule { }
Вот ошибка, которую я получаю:
Ошибка: Неперехваченный (в обещании): Ошибка: Тип PaperComponent является частью деклараций двух модулей: BookModule и StoreModule! Пожалуйста, подумайте о перемещении PaperComponent в модуль более высокого уровня, который импортирует BookModule и StoreModule. Вы также можете создать новый NgModule, который экспортирует и включает PaperComponent, а затем импортирует этот NgModule в BookModule и StoreModule.
Как я могу полностью структурировать это, чтобы экспортировать оба компонента (BookComponent и PaperComponent), чтобы я мог использовать их в другом модуле? Я хочу сделать PaperComponent многоразовым с помощью BookModule и Storemodule. Для одного модуля мне нужна только бумага, но для другого мне нужна книга, в которую также входит бумага. Надеюсь, вы понимаете мою проблему!
1 ответ
Я только что запустил вашу настройку через stackblitz, и это без проблем.
Проверьте свой код, чтобы убедиться, что BookModule
не заявляет PaperComponent
.
book.module.ts
import { NgModule } from '@angular/core';
import { BookComponent } from './book.component';
import { PaperModule } from './paper.module';
import { PaperComponent } from './paper.component';
@NgModule({
declarations: [
BookComponent,
// This would be a problem
PaperComponent
],
imports: [
PaperModule
],
exports: [
BookComponent,
]
})
export class BookModule { }