iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
NG8109 means an Angular template interpolation references a signal without calling it. If the template should display the signal’s value, change {{ mySignal }} to {{ mySignal() }}. The check is one of Angular’s extended diagnostics and requires strictTemplates.
What NG8109 means
Angular names this diagnostic interpolatedSignalNotInvoked. It flags a signal that appears uninvoked in a text interpolation. A signal is a zero-argument function: calling it returns its current value. An interpolation therefore needs the call when it is meant to render that value.
For example, this component declares a signal holding a number:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems@Component({
template: `<div>{{ mySignal() }}</div>`,
})
class MyComponent {
mySignal: Signal<number> = signal(0);
}
How to fix NG8109
- Go to the template location identified by the diagnostic.
- Check whether the expression is a signal and the interpolation is meant to display its value.
- If so, invoke it by adding parentheses: change
{{ mySignal }}to{{ mySignal() }}.
Do not add parentheses indiscriminately in contexts where the signal object itself is intentionally being passed or used. NG8109 specifically concerns template interpolations.
#1 Best Overall
When Angular reports this diagnostic
Angular extended diagnostics require strictTemplates to be enabled; NG8109 has no additional requirement. Extended diagnostics are warnings by default. Angular lets a project configure an individual check or the default diagnostic category as a warning, an error, or suppressed.
Suppressing NG8109
If a project has a deliberate reason to silence this check, set its documented key in tsconfig.json:
Rank #2
{
"angularCompilerOptions": {
"extendedDiagnostics": {
"checks": {
"interpolatedSignalNotInvoked": "suppress"
}
}
}
}
For the usual case, correcting the interpolation to call the signal addresses the cause rather than hiding the diagnostic.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →How NG8109 differs from nearby diagnostics
| Diagnostic | What it concerns |
|---|---|
| NG8109 | An uninvoked signal in a text interpolation. |
| NG8117 | An uninvoked ordinary function in a text interpolation. |
| NG8111 | An uninvoked function in an event binding. |
Use the diagnostic code and the expression’s type to identify which case you are dealing with; NG8109 is specifically about signals.
Rank #3
Migration and Angular version notes
Angular’s v19 signal-input migration guidance describes an automated migration from @Input() fields to signal input() members that also updates references to call the migrated signal, including in templates. That guidance is specific to the v19 migration; do not assume its instructions apply unchanged to every Angular release.
Angular notes that new extended diagnostics may be added or enabled in minor versions. If a project treats the default warnings as errors, review Angular’s semver caveat when changing versions.
Quick Recap
Rank #4
Official Angular references
- NG8109: Signals must be invoked in template interpolations
- Angular extended diagnostics overview
- Angular compiler options
- Signal inputs migration guide
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

