Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Why services exist, singletons with providedIn: 'root', constructor injection, component-level providers and hierarchical injectors, useClass/useValue/useFactory, and config values via InjectionToken.