Bird
Raised Fist0
Angularframework~5 mins

Input signals and model signals in Angular - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is an input signal in Angular standalone components?
An input signal is a reactive value passed from a parent component to a child component, allowing the child to react to changes automatically.
Click to reveal answer
beginner
How do model signals differ from input signals in Angular?
Model signals are signals defined inside a component to hold and manage its own reactive state, while input signals come from outside the component.
Click to reveal answer
beginner
Which Angular function is used to create a model signal?
The `signal()` function is used to create a model signal inside a component to hold reactive data.
Click to reveal answer
intermediate
How do you declare an input signal in an Angular standalone component?
Use the `input()` function imported from `@angular/core`, for example: `count = input(0);` or `count = input.required<number>();` to receive a reactive input signal.
Click to reveal answer
intermediate
Why are signals preferred over traditional inputs for reactive data flow in Angular?
Signals provide automatic reactivity and better performance by tracking dependencies and updating only when needed, unlike traditional inputs which require manual change detection.
Click to reveal answer
What does an input signal in Angular represent?
AA lifecycle hook in Angular
BA method to fetch data from a server
CA CSS style applied to a component
DA reactive value passed from parent to child component
Which function creates a model signal inside an Angular component?
AcreateSignal()
Bsignal()
CuseState()
DsetSignal()
How do you mark a property as an input signal in Angular?
A@Output()
B@Model()
Cinput()
D@Signal()
What is a key benefit of using signals for inputs in Angular?
AThey automatically update when data changes
BThey disable change detection
CThey make components slower
DThey require manual event listeners
Where are model signals typically defined in Angular?
AInside the component to hold its own state
BIn the parent component only
CIn the Angular module file
DIn the CSS stylesheet
Explain how input signals and model signals work together in an Angular component.
Think about data flow from outside to inside the component.
You got /4 concepts.
    Describe the steps to create and use an input signal in an Angular standalone component.
    Focus on how data is passed and used reactively.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of Input signals in Angular components?
      easy
      A. To receive reactive data from parent components
      B. To send events to parent components
      C. To style the component dynamically
      D. To handle user input events

      Solution

      1. Step 1: Understand Input signals role

        Input signals allow a component to get reactive data from its parent, keeping the data flow reactive and automatic.
      2. Step 2: Differentiate from other options

        Sending events to parents is done by outputs, styling is unrelated, and user input events are handled differently.
      3. Final Answer:

        To receive reactive data from parent components -> Option A
      4. Quick Check:

        Input signals = receive reactive data [OK]
      Hint: Input signals bring data in from parents [OK]
      Common Mistakes:
      • Confusing input signals with output events
      • Thinking input signals handle styling
      • Assuming input signals manage user events
      2. Which of the following is the correct way to declare an input signal in an Angular standalone component?
      easy
      A. @Input() inputSignal = signal();
      B. const inputSignal = signal();
      C. const inputSignal = @Input(signal());
      D. signal @Input() inputSignal;

      Solution

      1. Step 1: Recall Angular input signal syntax

        Input signals are declared with the @Input() decorator followed by a signal initialization.
      2. Step 2: Check each option

        @Input() inputSignal = signal(); correctly uses @Input() decorator before the signal. const inputSignal = signal(); misses the decorator, C and D have invalid syntax.
      3. Final Answer:

        @Input() inputSignal = signal(); -> Option A
      4. Quick Check:

        Input signals need @Input() decorator [OK]
      Hint: Use @Input() before signal declaration [OK]
      Common Mistakes:
      • Forgetting the @Input() decorator
      • Placing @Input() incorrectly
      • Using invalid syntax with signals
      3. Given this Angular component code snippet:
      export class MyComponent {
        @Input() count = signal(0);
      
        increment() {
          this.count.update(c => c + 1);
        }
      }

      What will be the value of count() after calling increment() twice if the initial value is 0?
      medium
      A. 0
      B. 1
      C. undefined
      D. 2

      Solution

      1. Step 1: Understand initial signal value

        The signal count starts at 0.
      2. Step 2: Apply increment method twice

        Each call to increment() updates the signal by adding 1, so after two calls: 0 + 1 + 1 = 2.
      3. Final Answer:

        2 -> Option D
      4. Quick Check:

        0 + 2 increments = 2 [OK]
      Hint: Each update adds 1 to the signal value [OK]
      Common Mistakes:
      • Thinking signals don't update automatically
      • Confusing method calls with direct assignment
      • Assuming initial value changes unexpectedly
      4. Identify the error in this Angular component code using input signals:
      export class SampleComponent {
        @Input() data = signal();
      
        ngOnInit() {
          this.data.set('Hello');
        }
      }
      medium
      A. Input signals must be readonly
      B. Missing initial value for signal()
      C. ngOnInit() is not allowed in standalone components
      D. Cannot call set() on input signals

      Solution

      1. Step 1: Check signal initialization

        The signal data is declared without an initial value, which is invalid.
      2. Step 2: Understand signal requirements

        Signals must have an initial value when created, so signal() without arguments causes an error.
      3. Final Answer:

        Missing initial value for signal() -> Option B
      4. Quick Check:

        Signals need initial values [OK]
      Hint: Always initialize signals with a value [OK]
      Common Mistakes:
      • Leaving signals uninitialized
      • Thinking set() is disallowed on inputs
      • Confusing lifecycle hooks usage
      5. You want to create a component that receives a reactive input signal userName and also maintains a local model signal greeting that updates automatically when userName changes. Which approach correctly implements this behavior?
      hard
      A. Use @Input() userName: string; and create greeting = signal(''); updated by a setter
      B. Use @Input() userName = signal(''); and update greeting manually in ngOnChanges
      C. Use @Input() userName = signal(''); and inside the component create greeting = computed(() => `Hello, ${this.userName()}`);
      D. Use @Input() userName = signal(''); and assign greeting = signal('Hello'); once in constructor

      Solution

      1. Step 1: Understand reactive input and model signals

        The input signal userName provides reactive data from parent. The local greeting should react automatically to changes.
      2. Step 2: Use computed signal for automatic updates

        Using computed creates a signal that updates whenever userName() changes, keeping greeting in sync.
      3. Final Answer:

        Use @Input() userName = signal(''); and greeting = computed(() => `Hello, ${this.userName()}`); -> Option C
      4. Quick Check:

        Computed signals auto-update from input signals [OK]
      Hint: Use computed() for dependent reactive signals [OK]
      Common Mistakes:
      • Manually updating signals instead of computed
      • Using plain string input instead of signal
      • Assigning greeting only once without reactivity