With Angular 6, below is the preferred way to create singleton services:
import { Injectable } from \'@angular/core\'; @Injectable({ providedIn: \'root\', })
And what about interceptors and guards? This things can be global I guess. I agree with your consideration about CoreModule doesn't have declarations and only pure services, but I think Guards and Interceptors should be considerate too.