With Angular 6, below is the preferred way to create singleton services: import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root', }) export class UserService { } From Angular doc: When you provide the service at the root level, Angular creates a single, shared instance of HeroService and injects into any class that asks for it. Registering the provider in the @Injectable metadata also allows Angular to optimize an app by removing the service if it turns out not to be used after all. Also, providers: [ // no need to place any providers due to the `providedIn` flag... ] So, does that mean we no more need CoreModule? We can import services and other common modules directly into AppModule. Continue reading...