#angular #typescript #angular10
#angular #typescript #angular10
Вопрос:
Я новичок в angular, но я не понимаю, куда мне нужно поместить свой AlertService и импорт модулей. На данный момент я импортирую его в свой основной модуль. Мой основной модуль импортируется в мой модуль приложения. Служба оповещений хорошо работает в моем app.component.html Но я не могу заставить это работать в моем домашнем модуле. Мой HomeModule также импортируется в AppModule. Для того, чтобы мой AlertModule определил:
@NgModule({
imports: [CommonModule],
declarations: [AlertComponent],
exports: [AlertComponent]
})
export class AlertModule { }
Здесь мой основной модуль def:
@NgModule({
declarations: [
FooterComponent,
HeaderComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
AlertModule
],
providers: [
NavbarService
],
bootstrap: [],
exports: [
FooterComponent,
HeaderComponent,
AlertComponent
]
})
export class CoreModule extends EnsureImportedOnceModule {
public constructor(@SkipSelf() @Optional() parent: CoreModule){
super(parent);
}
}
Здесь мой модуль приложения определяет:
@NgModule({
imports: [
CoreModule,
SharedModule,
AppRoutingModule,
HomeModule
],
declarations: [
AppComponent
],
providers: [],
bootstrap: [AppComponent],
exports: [
]
})
export class AppModule { }
Затем я получил СООБЩЕНИЕ ОБ ОШИБКЕ в app/modules/home/home.component.html:2:1 — ошибка NG8001: ‘alert’ не является известным элементом:
Любые советы о том, как правильно использовать AlertModule в структуре моего проекта?
Комментарии:
1. Вы пишете о AlertService, но экспортируете AlarmComponent. Какой из них?
2. Мой AlertService является частью alertModule, который содержит, моделирует, сервис и компонент для отображения оповещения. Этот alertModule импортируется в CoreModule, а затем в AppModule. Я ожидал, что смогу использовать AletService И ComponementService в любом месте моего приложения?
Ответ №1:
Вам нужно будет импортировать CoreModule
HomeModule
.
Комментарии:
1. AlertModule (которые содержат AlertService, AlertComponent, AlertModel) импортируются в мой ОСНОВНОЙ модуль, а не в общий. Может быть, я делаю это неправильно? Может быть, мне нужно разделить AlertModule, чтобы позволить AlertService в моем основном модуле затем использовать его провайдером, а AlertModel и AlertComponent в SharedModule?
2. Чтобы использовать какую-либо службу, компонент, модель в основном модуле, вам нужно будет импортировать их в модуль, с которым вы работаете.
Ответ №2:
Если вы используете компонент из другого модуля, вам необходимо экспортировать этот компонент в модуль и импортировать модуль в тот, который его использует. В этом случае, чтобы устранить вашу ошибку, импортируйте alertModule в свой homeModule. Я не знаю, почему вы снова экспортируете свой alertComponent в свой CoreModule.
Если вам нужна служба оповещений повсюду в вашем приложении, используйте provideIn: ‘root’ в своей службе или объявите ее в своем основном модуле в качестве поставщика.