The host form component (use for EditMode, dirty notifications, etc). Set by the slot host.
OptionalFormOptional form context — same shape the collapsible-panel chrome expects. Set by the slot host.
ReadonlyHostSlot-mounted hosts must not sit in the left-nav flex column — leftover
height targets mj-collapsible-panel as a direct child of
.mj-forms-all-panels. display: contents makes the inner panel that child.
The entity record being edited. Set by the slot host before view init.
StaticɵdirStaticɵfacConvenience getter for read-only / edit-mode rendering. Falls back to
false when the panel is shown outside a BaseFormComponent host (e.g.,
a dashboard quick-edit dialog reusing the same panel — see the
"composable panel" docs).
Configures overrides for any toolbar item (standard built-in items like 'edit', 'delete', 'favorite', 'history', etc., or custom items).
Dynamically disables a toolbar item by key, with an optional reason string for the tooltip.
Optionalreason: stringA callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
Called after the parent form reloads the current record from the database. Default is a no-op. Override to refresh panel-owned data that is not a related-entity grid (those already subscribe to FormRecordRefreshCoordinator themselves).
Registers a dynamic toolbar action item / button into the host form toolbar.
Sets the numeric display order for a toolbar item.
Unregisters a previously registered dynamic toolbar item by key.
Override to add per-panel validation that should block the parent form's
Save(). Return { Success: true, Errors: [] } when valid, or include
ValidationErrorInfo entries to surface field-level errors. The default
implementation reports valid (panels that don't need extra validation
can leave this method off).
Abstract base for every dynamically-injectable form panel.
Subclasses are standalone Angular components decorated with
@RegisterClass(BaseFormPanel, { metadata: { entity, slot, sortKey? } }). At runtime,<mj-form-panel-slot>discovers matching registrations viaClassFactory.GetAllRegistrationsByMetadata, instantiates each viaViewContainerRef.createComponent, and wiresRecord+FormComponent+FormContextinto the inputs.Lifecycle hooks: standard Angular
ngOnInit/ngOnDestroywork as usual.Recordis guaranteed to be set before the first change-detection pass.Optional
validate()returns a synchronous validation result; the parentBaseFormComponent.Save()path will surface it via the existing validation pipeline when called. Panels that don't validate anything beyond what the record itself does can leave this method off.