Skip to main content
Version: 4.x

injectForesightEvent

This is meant for high-level, app-wide use cases like analytics, debugging, or a global prediction counter. injectForesightEvent subscribes to ForesightManager events for the lifetime of the current Angular injection context.

import { Component, signal } from "@angular/core"
import { injectForesightEvent } from "@foresightjs/angular"

@Component({
selector: "app-prefetch-counter",
standalone: true,
template: `<p>{{ hits() }} prefetches triggered</p>`,
})
export class PrefetchCounterComponent {
readonly hits = signal(0)

constructor() {
injectForesightEvent("callbackInvoked", () => {
this.hits.update(count => count + 1)
})
}
}

You don't need to remove the listener yourself. Angular destroys the subscription with the component, directive, service, or other injection context where the helper was called.

Dynamic event type​

Pass an Angular signal when the event type needs to change over time. The subscription re-binds automatically:

readonly eventType = signal<"callbackInvoked" | "callbackCompleted">("callbackInvoked")

constructor() {
injectForesightEvent(this.eventType, event => {
console.log(event.type)
})
}

For listeners outside an injection context, use ForesightService.listen.