angular/packages/compiler-cli/src
Kristiyan Kostadinov 8f3d0b9d97 feat(core): introduce @Service decorator
These changes introduce the new `@Service` decorator which is a more ergonomic alternative to `@Injectable`. The reason we're adding a new decorator is that `@Injectable` has been around since the beginning of Angular and it has a lot of baggage that adds unnecessary overhead for users that generally want to define a singleton service, available in their entire app. The key differences between `@Service` and `@Injectable` are:
1. `@Service` is `providedIn: 'root'` by default. You can opt into providing the service yourself by setting `autoProvided: false` on it.
2. `@Service` doesn't allow constructor-based injection, only the `inject` function.
3. `@Service` doesn't support the complex type signature of `@Injectable` (`useClass`, `useValue` etc.). Instead it supports a single `factory` function.

Example:

```ts
import {Service} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {AuthService} from './auth';

@Service()
export class PostService {
  private readonly httpClient = inject(HttpClient);
  private readonly authService = inject(AuthService);

  getUserPosts() {
    return this.httpClient.get('/api/posts/' + this.authService.userId);
  }
}
```
2026-04-22 11:01:01 -07:00
..
bin refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
ngtsc feat(core): introduce @Service decorator 2026-04-22 11:01:01 -07:00
transformers refactor(compiler): remove preservePlaceholders (#58176) 2024-10-16 06:42:37 +00:00
extract_i18n.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
main.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
perform_compile.ts build: initial test of TypeScript 6 2026-01-15 13:41:01 -08:00
perform_watch.ts refactor(common): Removes unused imports to clean up dependencies 2025-11-06 08:35:28 -08:00
typescript_support.ts feat(core): drop support for TypeScript 5.9 2026-04-03 09:44:11 -07:00
version.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
version_helpers.ts refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00