Службе оповещений Angular требуется совет

#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’ в своей службе или объявите ее в своем основном модуле в качестве поставщика.