Declare the service with `@Injectable()` and provide it on the route that owns its lifetime: ```ts // checkout-state.service.ts import { Injectable, inject } from '@angular/core'; import { CartService } from './cart.service'; @Injectable() export class CheckoutState { private readonly cart = inject(CartService); step = 1; nextStep(): void { this.step += 1; } } ``` Register it in the route configuration: ```ts // app.routes.ts import { Routes } from '@angular/router'; import { CheckoutState } ...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill angular-dependency-injection --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Angular Dependency Injection?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-angular-dependency-injection-730bf6c5)More formats (shields.io, HTML) on the badges page.
Declare the service with `@Injectable()` and provide it on the route that owns its lifetime:
```ts
// checkout-state.service.ts
import { Injectable, inject } from '@angular/core';
import { CartService } from './cart.service';
@Injectable()
export class CheckoutState {
private readonly cart = inject(CartService);
step = 1;
nextStep(): void {
this.step += 1;
}
}
```
Register it in the route configuration:
```ts
// app.routes.ts
import { Routes } from '@angular/router';
import { CheckoutState } from './checkout-state.service';
export const routes: Routes = [
{
path: 'checkout',
providers: [CheckoutState],
loadComponent: () =>
import('./checkout-page.component').then(m => m.CheckoutPageComponent),
},
];
```
Any component, guard, resolver, or child route under `checkout` can inject `CheckoutState`:
`private readonly checkout = inject(CheckoutState);`
The route provider creates a route-tree-scoped instance. Descendants share that instance, and Angular destroys it when the route tree is left. Do not also make this state service `providedIn: 'root'` unless a root fallback is intentional; a route provider can shadow a root provider and produce separate instances. Use `providedIn: 'root'` for true application-wide singletons, not for state that belongs only to this route.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!