Import it from @grafloria/angular.
Core service for managing property schemas and property values. Acts as bridge between property panel UI and diagram engine.
ts@Injectable({ providedIn: 'root' })
export class PropertyPanelService
Properties
| Name | Type | Default | Description |
|---|---|---|---|
propertyChanged$ | Observable that emits when any property changes. Can be filtered by node ID or property key. |
Methods
registerSchema(nodeType: string, schema: PropertySchema): void— Register a property schema for a node type.registerSchemaFromJSON(nodeType: string, schemaJson: string): void— Register schema from JSON string. Enables loading schemas from database or config files.extendSchema( nodeType: string, parentType: string, overrides: Partial<PropertySchema> ): void— Extend an existing schema to create a specialized type. Child inherits all parent properties and can override or add new ones.getSchema(nodeType: string): PropertySchema | null— Get property schema for a node type. Returns fully resolved schema (including inherited properties).hasSchema(nodeType: string): boolean— Check if schema is registered for node type.getAllTypes(): string[]— Get list of all registered node types.unregisterSchema(nodeType: string): boolean— Unregister the schema for a node type. Since {@link registerSchema} rejects duplicates, this is the only way to replace a schema (e.g. hot-reloading schemas from a config source).clearSchemas(): void— Remove all registered schemas. Useful when tearing down a diagram context or isolating test state.getPropertyValue(node: PropertyDiagramNode, propertyKey: string): any— Get property value from a node. Supports nested property paths (e.g., 'style.fill.color').setPropertyValue(node: PropertyDiagramNode, propertyKey: string, value: any): any— Set property value on a node. Validates value against schema before setting.setPropertyValues( nodes: PropertyDiagramNode[], propertyKey: string, value: any ): string[]— Set property value on multiple nodes simultaneously. Validates once and applies to all nodes. Rolls back all changes if any validation fails.validateProperty(value: any, property: PropertyDefinition): ValidationResult— Validate a property value against its definition.isPropertyVisible(node: PropertyDiagramNode, property: PropertyDefinition): boolean— Check if property is visible based on condition. Evaluates condition expression against current node properties.applyDefaults(node: PropertyDiagramNode, schema: PropertySchema): void— Apply default values from schema to node. Only sets properties that are currently undefined.getPropertyGroups(schema: PropertySchema): Map<string, PropertyDefinition[]>— Get properties organized by groups. Properties without group go to 'General' group.getPropertyChangesForNode(nodeId: string): Observable<PropertyChangeEvent>— Filter property change events by node ID.getPropertyChangesForKey(propertyKey: string): Observable<PropertyChangeEvent>— Filter property change events by property key.
Was this page helpful?