title: Angular 2/4+ Shared Module: To forRoot() or not to forRoot()
body: <p>Ever since digging past the first few basic levels of Angular dependency injection (DI), and striking the gem that is forRoot(), I have been wondering exactly what the best practices are for actually using it.</p>
  
  <p>I stumbled across the method while in search of a way to allow a lazy loaded module to access a service within the root's context, allowing a stream of data to be shared between two modules, one or both of which may be lazy loaded. Since then I have wondered, could you use forRoot() for everything in a shared module and save a lot of import statements throughout an application? What are the catches? Are there certain things that are easily used in for root, and other things that aren't? Or was for root primarily developed to bridge the aforementioned DI context issue when bridging lazy loaded modules?</p>