Drops the memo for one entity, or all of them. For a form that changed underneath: the Manage drawer and the apply flow call it after each write to the entity's panels.
OptionalentityName: stringWhat entityName's form contains, with empty lists when it could not be read.
a ViewContainerRef inside BaseFormsModule. The form host is declared
in that module, so it is created through a view in its scope rather than through
the environment injector.
Optionalprovider: IMetadataProviderthe provider the form is drawn with; the global provider when omitted.
Reads what an entity's form really contains, without opening the record.
Both answers are properties of the form's Angular template rather than of any metadata. Slots: CodeGen emits a fixed three, the container adds
after-everything, and a hand-written custom form can emit anything. Sections: a generated template is frozen at the last CodeGen run, so the sections it draws can differ from what the field metadata now says. The only authority for either is the rendered form.So this renders one — offscreen, against a new unsaved record, once per entity per session. That probe is cheap by construction: a related-entity grid renders only
@if (Record.IsSaved), so an unsaved record fires none of their queries, and the slot elements carry their position as a static HTML attribute, so reading them needs no injector access.Every failure returns an empty list rather than throwing. The caller treats empty as "unknown" and falls back, because a dialog that cannot answer this question should still open.