Performance: Signal creation and reading
This affects how quickly Angular updates the UI when data changes and how efficiently it tracks dependencies.
Jump into concepts and practice - no test required
const count = signal(0); function increment() { count.set(count() + 1); } // Read signal once outside the loop const currentCount = count(); for(let i = 0; i < 1000; i++) { console.log(currentCount); }
const count = signal(0); function increment() { count.set(count() + 1); } // Reading signal inside a heavy loop or multiple times unnecessarily for(let i = 0; i < 1000; i++) { console.log(count()); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Reading signal multiple times in loop | Low DOM ops | Triggers multiple change detection cycles | Low paint cost | [X] Bad |
| Reading signal once and caching value | Low DOM ops | Single change detection cycle | Low paint cost | [OK] Good |
signal function do in Angular?signalsignal function is used to create reactive values that Angular tracks for changes.signal doessignal as a function with the initial value in parentheses.const count = signal(10);. Others use wrong casing or invalid syntax.const count = signal(5); console.log(count()); count.set(10); console.log(count());
count is created with initial value 5, so count() returns 5.count.set(10) updates the value to 10, so the next count() returns 10.const name = signal('Alice');
console.log(name);
name('Bob');name(). To update, use name.set(newValue).name('Bob'), which is invalid. The correct way is name.set('Bob').const numbers = signal([1, 2, 3]); // Add 4 to numbers here
numbers(). To update, use numbers.set(newValue).[...numbers(), 4]. Then update signal with numbers.set([...numbers(), 4]).