---
title: "Signal state and form"
date: "2026-04"
category: "Angular"
tags: ["Angular"]
description: "There's one spot where Angular isn't quite like React, a property change here triggers a re-render by itself, while over on the React side you need state for that..."
source: "https://enriquemark.com/en/posts/Signal%E7%8B%80%E6%85%8B%E5%92%8CForm"
---

There's one spot where Angular isn't quite like React, a property change here triggers a re-render by itself, while over on the React side you need state for that. The other side of it is the service function here, which is a global singleton, so every component shares the state. The official recommendation is still to put it in a Signal, because a plain property update walks everything to check it, which costs performance, and render updates triggered by property changes may get dropped in the future. Even so, Signal and State are still not the same thing. I said this over in [MVC and MVVM](/en/posts/MVC和MVVM). On the whole-DOM-checking front React costs more performance than Signal, since Signal goes straight to the target.

There's another point here on top of that. Signal as state and form as a structure for storing data each have their own use cases. If no data is involved and it's only about telling UI state apart, use Signal, which is a "signal for rendering" in the literal sense. Data is a different story. You can stuff data into a Signal too, but validating it means writing a whole set of check methods yourself, and the official form is the better option there. Besides, if I want to bind the data to html, form comes with two-way binding and good support, which makes it the better choice.

So for the "data" that needs validation, needs to go to an api, needs to be submitted, form is best. Outside of that, for render state that just binds to the form, or for some kind of temporary data that ends up syncing into the form, Signal is the safer bet.

Abusing Signal and abusing form are no different at bottom. Say you stuff data into a Signal (you came over from React and use it as state directly), or the other way around, you dump render state into form. In the end the responsibilities and the boundaries are both unclear, everything is mixed together, an absolute picture of hell. It becomes a heavy maintenance burden and, over time, technical debt.

---

**Translation note.** I wrote this in Chinese. This English version is an LLM translation, so the wording is not mine even though the thinking is. Original: [Signal狀態和Form](</zh-hant/posts/Signal狀態和Form>).
