ReadonlyChangesFires when a source registers / leaves, or when a source reports that its state
changed (a field edit). The container marks itself for check on it so an OnPush
rail re-reads the counts on the next pass instead of waiting for its poll.
Section keys currently registered, in registration order.
Indicators summed over every registered section.
Whether a section is registered.
Current indicators for one section; empty when nothing is registered under that key.
Indicators summed over several section keys — what a rail group needs, since one
group (notably Details) fronts many panels.
A source's state changed (field edited, error cleared). Nudges OnPush readers.
Declare (or re-declare) a section. A second source for the same key replaces the first.
Remove a source. Keyed on identity, so a replaced source cannot evict its replacement.
OptionalpreviousKey: stringForm-level errors no registered section claims. Surfaced deliberately: an error that vanished from every badge is worse than the no-badge behaviour this replaced.
reachableKeys, when given, limits WHICH sources may claim: a section that is
registered but sits in no rail group (hidden by hiddenSectionKeys, dropped by the
chrome) has no badge anywhere, so letting it claim would make its failure vanish.
Its errors stay unrouted and land in the whole-form total instead.
OptionalreachableKeys: ReadonlySet<string>
Per-container registry of section indicator sources — the join between "a rail group" and "the sections it fronts", read live rather than pushed.
Pull, not push. Every query asks the registered sources for their current counts. Nothing is cached here and nothing is written from inside a change-detection pass, which is what keeps the rail free of
ExpressionChangedAfterItHasBeenCheckederrors: within one pass a field's dirty / error state is constant (it mutates in event handlers), so every reader in that pass sees the same answer.Provided by
<mj-record-form-container>viaproviders(notviewProviders), so projected panels and slot-mountedBaseFormPanels reach the same instance.