角度4 - 不需要的多个服务实例

时间:2017-08-15 15:37:25

标签: angular instantiation angular-services angular-module

这可能是一个棘手的问题,我希望提供足够的信息来解决这个问题,因为我已经尝试了几个小时。

我很确定我已经以某种方式实例化了两个服务,因为从一个组件启动的更改不会影响另一个组件。

以下是模块结构。

canvas

CalendarService有一个初始化方法,用于传递初始数据。

SharedModule //reuseable cmps and so on..

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

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

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

CaldendarMonthCmp在月份网格中显示日历,当我点击任何一天时,它会初始化并传递newDays数组并在新页面中打开CalendarDayCmp。

CalendarDayCmp订阅了calendarDays $,但只获得一个空数组,而不是newDays。

当我改为代码

时,我怀疑两个服务实例已经变硬了
calendarDays$: BehaviorSubject<sbCal.SbCalendarDay[]> = new BehaviorSubject([]);

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

仅在调用initialize时实例化主题。在这种情况下,打开CalendarDayCmp会抛出并且无法订阅未定义的错误。

我已经阅读了角度ngModule描述,据我了解,只有在我将服务提供给其他模块时才会实例化更多服务?

感谢您的帮助!

0 个答案:

没有答案
相关问题