linkedinlogo
Angular
Angular

What is LinkedSignal for Bidirectional Reactivity?

March 18, 2026

LinkedSignal is an advanced Angular signal primitive that creates writable signals intrinsically linked to source signals. Unlike computed() (read-only), LinkedSignal allows direct .set() and .update() while automatically maintaining valid values based on its source signals when they change.

Code Example:-

Code

import { Component, signal, linkedSignal } from '@angular/core';

@Component({
  template: `
    <select [value]="selectedOption()?.name" (change)="changeOption($event)">
      @for (opt of options(); track opt.id) {
        <option [value]="opt.name">{{ opt.name }}</option>
      }
    </select>
    <p>Selected: {{ selectedOption()?.name }}</p>
  `
})
export class ShippingSelector {
  options = signal([
    { id: 0, name: 'Ground' },
    { id: 1, name: 'Air' },
    { id: 2, name: 'Sea' }
  ]);

  // LinkedSignal auto-resets to first valid option if source changes
  selectedOption = linkedSignal({
    source: this.options,
    computation: (options, previous) => {
      // Preserve previous selection if still valid
      return options.find(opt => opt.id === previous?.id) || options[0];
    }
  });

  changeOption(event: Event) {
    const name = (event.target as HTMLSelectElement).value;
    this.selectedOption.set(this.options().find(opt => opt.name === name)!);
  }
}
      
bg-image
Company Deck
PDF, 3MB

© 2026 Zignuts Technolab. All Rights Reserved.