# Property change listener in ComponentModelDelegate

**URL:** <https://forum.inductiveautomation.com/t/property-change-listener-in-componentmodeldelegate/112215>\
**Category:** Module Development\
**Created:** [November 16, 2025, 7:34pm UTC](https://forum.inductiveautomation.com/t/property-change-listener-in-componentmodeldelegate/112215 "2025-11-16T19:34:51Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![torstein](https://avatars.discourse-cdn.com/v4/letter/t/f0a364/32.png) [@torstein](https://forum.inductiveautomation.com/u/torstein)\
**Post date:** [November 16, 2025, 7:34pm UTC](https://forum.inductiveautomation.com/t/property-change-listener-in-componentmodeldelegate/112215/1 "2025-11-16T19:34:51Z")

</div>

Hi,

I’m making a component (in React) it uses a ComponentModelDelegate. I have tried to implement a property change listener. But when I uses the code bellow, all other props are frozen. What is the correct way of getting updated props of the component, inside of the component model delegate?

My usecase is that I pull all alarms every minute. The user of the component can add an source filter, which may depend on the sessions path. So I would like to update the filter value at each pull.

```java
public class FooModelDelegate extends ComponentModelDelegate { 
   @Override
    public void onStartup() {
        filterSourcePathReference = component.createPropertyReference("this.props.filterSourcePath", new FilterSourcePathListener(), Origin.ANY);
        filterSourcePathReference.startup();
    }

@Override
public void onShutdown() {
        filterSourcePathReference.shutdown();
        scheduler.shutdownNow();
    }

private class FilterSourcePathListener implements Consumer<PropertyTreeChangeEvent> {
    @Override
    public void accept(PropertyTreeChangeEvent event) {
        log.info("Filter source path changed: " + event.readValue());
        String rawValue = (String) event.readValue().getValue();
        filterSourcePath = rawValue.split(",");
      }
    }

```

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [November 17, 2025, 3:44am UTC](https://forum.inductiveautomation.com/t/property-change-listener-in-componentmodeldelegate/112215/2 "2025-11-17T03:44:45Z")

</div>

You can directly subscribe to changes of the property tree:

[Component::getPropertyTreeOf](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.33/com/inductiveautomation/perspective/gateway/api/Component.html)  
[PropertyTree::subscribe](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.33/com/inductiveautomation/perspective/gateway/property/PropertyTree.html#subscribe(com.inductiveautomation.ignition.common.JsonPath,java.util.Set,java.util.function.Consumer,boolean))

A (non-trivial) example:

> <https://github.com/mussonindustrial/embr/blob/8.1/main/modules/periscope/gateway/src/main/kotlin/com/mussonindustrial/ignition/embr/periscope/component/embedding/FlexRepeaterModelDelegate.kt#L133C5-L141C4>
