我有一个angular2 + app,具有以下结构:App Component - >登录组件和主要组件。主要组件是延迟加载模块(主模块)的一部分,只有在成功登录后才能访问。
我希望在主模块中有一个无法在其外部访问的userService。我相信如果模块是延迟加载的,那么在懒惰模块之外将无法访问此服务。但是,如果我返回登录屏幕(注销后)然后重新进入主模块,我注意到该服务没有重新启动,因为当我返回登录时服务没有被销毁。根据我的理解,这是因为懒惰的模块没有被卸载。
我的另一个解决方案是在登录屏幕之后将服务范围界定到应用程序的一部分,以便在主要组件而不是主模块中提供它。这样,使用分层依赖注入的所有子组件都可以访问它。这似乎在很大程度上起作用,但是如果我尝试将userService注入其中,我无法在路由解析器中访问它(并且我认为在其他服务中也会出现同样的问题)。我得到静态注入器错误,说明没有提供者。我如何向另一个本地组件服务或路由解析器提供本地组件服务?
编辑:
我注意到第二部分,同一组件中提供的服务都可以互相注入。问题出在我的路线解析器上。据我所知,它们需要在模块中提供,以便路由模块可以访问它们。但是,这意味着它们不是我的主组件层次结构的一部分,因此无法访问此组件提供的任何服务。有没有办法解决?路径解析器在某种程度上总是与组件相关联,因此似乎很奇怪无法将它们与组件的层次结构相链接