angular 4 - нежелательные множественные сервисные экземпляры

Это может быть сложный вопрос, и я надеюсь предоставить достаточно информации, чтобы решить эту проблему, так как я уже пытаюсь часами.

Я почти уверен, что каким-то образом создал две службы, поскольку изменения, инициированные одним компонентом, не влияли на другой.

Ниже приведена структура модуля.

SharedModule //reuseable cmps and so on..

AppModule({
  imports:[SharedModule, PageModule]
})

PageModule({
  imports:[SharedModule,CalendarModule]
})

CalendarModule({
  imports:[SharedModule],
  declarations:[CaldendarMonthCmp, CalendarCmp, CalendarDayCmp]
  providers:[CalendarService]
})

CalendarService имеет метод инициализации, который передает начальные данные.

calendarDays$: BehaviorSubject<sbCal.SbCalendarDay[]> = new BehaviorSubject([]);

intializeDays(day: sbCal.SbCalendarDay) {
  let newDays = [...data] // do some calculations, array not empty
  this.calendarDays$.next(newDays);
}

CaldendarMonthCmp отображает календарь в сетке месяца, и когда я щелкаю по любому дню, он инициализирует и передает массивы newDays и открывает CalendarDayCmp на новой странице.

CalendarDayCmp подписывается на calendarDays $, но получает только пустой массив, а не newDays.

Мое подозрение в отношении двух экземпляров службы усилилось, когда я изменил код на

calendarDays$: BehaviorSubject<sbCal.SbCalendarDay[]>;
intializeDays(day: sbCal.SbCalendarDay) {
  let newDays = [...data] // do some calculations
  this.calendarDays$ = new BehaviorSubject(newDays);
}

создание объекта только в том случае, если вызвана инициализация. В этом случае открытие CalendarDayCmp выбрасывает и не может подписаться на неопределенную ошибку.

Я прочитал угловое описание ngModule и, насколько я понимаю, создание дополнительных сервисов происходит только в том случае, если я предоставляю Сервис другим модулям?

Спасибо за любую помощь!

0 ответов

Другие вопросы по тегам