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 и, насколько я понимаю, создание дополнительных сервисов происходит только в том случае, если я предоставляю Сервис другим модулям?
Спасибо за любую помощь!