mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
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);
}
}
```
|
||
|---|---|---|
| .. | ||
| doc_extraction | ||
| attach_source_location_spec.ts | ||
| authoring_diagnostics_spec.ts | ||
| authoring_inputs_spec.ts | ||
| authoring_models_spec.ts | ||
| authoring_outputs_spec.ts | ||
| authoring_queries_spec.ts | ||
| BUILD.bazel | ||
| component_indexing_spec.ts | ||
| debug_transform_spec.ts | ||
| declaration_only_emission_spec.ts | ||
| defer_spec.ts | ||
| env.ts | ||
| extended_template_diagnostics_spec.ts | ||
| hmr_spec.ts | ||
| host_bindings_type_check_spec.ts | ||
| host_directives_spec.ts | ||
| imports_spec.ts | ||
| incremental_error_spec.ts | ||
| incremental_semantic_changes_spec.ts | ||
| incremental_spec.ts | ||
| incremental_typecheck_spec.ts | ||
| local_compilation_spec.ts | ||
| ls_typecheck_helpers_spec.ts | ||
| monorepo_spec.ts | ||
| ngtsc_spec.ts | ||
| scope_spec.ts | ||
| selectorless_spec.ts | ||
| service_spec.ts | ||
| signal_forms_spec.ts | ||
| sourcemap_utils.ts | ||
| standalone_spec.ts | ||
| template_mapping_spec.ts | ||
| template_typecheck_spec.ts | ||
| util.ts | ||
| xi18n_spec.ts | ||