diff --git a/apps/angular/39-injection-token/src/app/data.ts b/apps/angular/39-injection-token/src/app/data.ts index 393edd0fa..6eb48aa05 100644 --- a/apps/angular/39-injection-token/src/app/data.ts +++ b/apps/angular/39-injection-token/src/app/data.ts @@ -1 +1,8 @@ -export const DEFAULT_TIMER = 1000; +import { InjectionToken, ValueProvider } from '@angular/core'; + +export const TIMER = new InjectionToken('default-timer'); + +export const getDefaultTimerProvider = (seconds = 1): ValueProvider => ({ + provide: TIMER, + useValue: 1000 * seconds, +}); diff --git a/apps/angular/39-injection-token/src/app/phone.component.ts b/apps/angular/39-injection-token/src/app/phone.component.ts index a58b3cd99..dccdab43f 100644 --- a/apps/angular/39-injection-token/src/app/phone.component.ts +++ b/apps/angular/39-injection-token/src/app/phone.component.ts @@ -1,10 +1,12 @@ import { Component } from '@angular/core'; +import { getDefaultTimerProvider } from './data'; import { TimerContainerComponent } from './timer-container.component'; @Component({ selector: 'app-phone', standalone: true, imports: [TimerContainerComponent], + providers: [getDefaultTimerProvider(2)], template: `
Phone Call Timer: diff --git a/apps/angular/39-injection-token/src/app/timer-container.component.ts b/apps/angular/39-injection-token/src/app/timer-container.component.ts index 30af69354..36f8c690c 100644 --- a/apps/angular/39-injection-token/src/app/timer-container.component.ts +++ b/apps/angular/39-injection-token/src/app/timer-container.component.ts @@ -1,5 +1,5 @@ -import { Component } from '@angular/core'; -import { DEFAULT_TIMER } from './data'; +import { Component, inject } from '@angular/core'; +import { TIMER } from './data'; import { TimerComponent } from './timer.component'; @Component({ selector: 'timer-container', @@ -17,5 +17,5 @@ import { TimerComponent } from './timer.component'; }, }) export class TimerContainerComponent { - timer = DEFAULT_TIMER; + timer = inject(TIMER); } diff --git a/apps/angular/39-injection-token/src/app/timer.component.ts b/apps/angular/39-injection-token/src/app/timer.component.ts index 95707ec61..31911f099 100644 --- a/apps/angular/39-injection-token/src/app/timer.component.ts +++ b/apps/angular/39-injection-token/src/app/timer.component.ts @@ -1,15 +1,16 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { interval } from 'rxjs'; -import { DEFAULT_TIMER } from './data'; +import { TIMER } from './data'; @Component({ selector: 'timer', standalone: true, template: ` - Timer running {{ timer() }} + Timer running {{ timerRunning() }} `, }) export class TimerComponent { - timer = toSignal(interval(DEFAULT_TIMER)); + timer = inject(TIMER); + timerRunning = toSignal(interval(inject(TIMER))); } diff --git a/apps/angular/39-injection-token/src/app/video.component.ts b/apps/angular/39-injection-token/src/app/video.component.ts index 2c218071a..ee292798c 100644 --- a/apps/angular/39-injection-token/src/app/video.component.ts +++ b/apps/angular/39-injection-token/src/app/video.component.ts @@ -1,10 +1,12 @@ import { Component } from '@angular/core'; +import { getDefaultTimerProvider } from './data'; import { TimerContainerComponent } from './timer-container.component'; @Component({ selector: 'app-video', standalone: true, imports: [TimerContainerComponent], + providers: [getDefaultTimerProvider(1)], template: `
Video Call Timer: