Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsAngular signal inputs let a component or directive read parent-provided values as signals. Declare them with input() or input.required() from @angular/core, then call the member to read its current value. Use model() instead when the child must update a value and propagate that change back to its parent.
How signal inputs work
An input signal is a class member whose value Angular updates when the parent binding changes. The receiving component reads it by calling it, rather than treating it like a plain property.
import { Component, input } from '@angular/core';
@Component({
selector: 'user-profile',
template: `{{ firstName() }} {{ lastName() }}`,
})
export class UserProfile {
firstName = input<string>();
lastName = input.required<string>();
}
In TypeScript, read the value with this.firstName(); in a template, use firstName(). Angular owns updates to the input signal, so the receiving component reads but does not directly write it. See Angular’s input guide and input API reference.
Optional and required inputs
Optional inputs
input<T>() without an initial value is optional. Its signal type includes undefined, so code that reads it should account for the value not having been supplied. An initial value instead gives the signal that value until Angular supplies a parent binding.
#1 Best Overall
Required inputs
Use input.required<T>() when the parent must provide a value. The signal type does not add undefined, and Angular reports missing required inputs in template use during build-time checking. This makes requiredness explicit rather than relying on a runtime default.
Aliases and input transforms
Aliases
An alias changes the name a parent uses in a template binding without changing the member name used inside the component’s TypeScript. Use aliases only when they solve a real naming need; Angular advises against unnecessary aliases and names that conflict with native DOM properties. The options are documented in Angular’s InputOptions API.
Rank #2
Transforms
A transform normalizes a bound value before it becomes the input signal’s value. Its parameter type describes values accepted from the template, while the signal exposes the transformed type. Angular requires transforms to be statically analyzable and recommends keeping them pure.
The built-in booleanAttribute handles HTML-style presence and treats the literal string "false" as false. numberAttribute parses a number and returns NaN when parsing fails. A transform is for input normalization; if you need to derive a value with a different meaning, use computed rather than disguising that derivation as a transform.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallRank #3
Choose between input() and model()
| API | Use it when | Writeability and propagation | Transforms |
|---|---|---|---|
input() |
The parent supplies a value and the child reads it. | Read-only from the child’s perspective; Angular updates it when the parent binding changes. | Supported for normalizing incoming values. |
model() |
The child needs to change a parent-provided value, such as a slider value or custom form-control value. | Writable with set and update; it creates a corresponding output with the Change suffix for two-way binding. |
Input transforms are not supported. |
Choose based on who owns changes: if the child only consumes the value, use input(); if it must update the value and communicate that update to the parent, use model(). Both APIs are described in Angular’s signal input guide.
Migrate @Input to signal inputs
Angular’s migration reference describes signal inputs as production ready as of Angular v19. The decorator-based @Input API remains supported, so migration is an available path rather than a requirement to update every project.
Rank #4
-
From the project workspace, run
ng generate @angular/core:signal-input-migration. -
Review the migrated declarations and references. The schematic updates eligible
@Input()members and adjusts references in templates, host bindings, and TypeScript to call the signal.Free tools Windows power users keep installed
One-click scans. No signup required.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Check skipped members and the scope of analysis. By default, the schematic skips inputs it cannot safely migrate and analyzes the workspace for references even if
--pathlimits where changes are made. -
Use
--insert-todosif you want comments identifying skipped inputs. Use--best-effort-modeonly if you are prepared to inspect and repair changes that may break the build. -
Validate references throughout the project before narrowing analysis with
--analysis-dir. Limiting analysis to a directory can leave references outside it unchanged. The migration is also available as a VS Code refactor.
Consult the signal inputs migration reference for the schematic’s current behavior and options.
Quick Recap
Which signal input pattern fits?
- Parent provides a value; child reads it: use
input(). - The parent must provide a value: use
input.required(). - The child must update the value and notify the parent: use
model(). - The incoming value needs normalization: use a pure, statically analyzable transform, such as
booleanAttributeornumberAttribute. - The component needs a derived value: derive it with
computed, not an input transform. - The codebase still uses decorators: keep using supported
@Inputdeclarations or run the migration and review its changes.
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.




