node package manager



Base classes that notify observers when properties are updated and objects are added or removed objects from collections.

Build Status npm version


Sample application:


Install observable-entities as a runtime dependency from npm.

npm i --save observable-entities


To observe property changes on an object, create a class that extends ObservableEntity. Then add a constructor that returns super.proxify(this). For example:

export class Product extends ObservableEntity {
  productId: number;
  productName: string;
  unitPrice: number;
  constructor() {
    return super.proxify(this);

ObservableEntity as a modifyListeners property of type Subject<INotifyInfo>[]. To listen for property changes, add a listener can call subscribe on it. For example, an Angular component can perform observable-based data binding with an OnPush strategy.

// Trigger binding when item is updated
this.modifyListener = new Subject<INotifyInfo>();
this.modifyListener.subscribe(info => {;
// Add listener to each product
this.products.forEach(product => {

Similarly, ObservableSet and ObservableMap have addListeners and removeListeners properties, and you can add listeners to trigger data binding when items are added or removed.

// Trigger data binding when item is added
this.addListener = new Subject<INotifyInfo>();
this.addListener.subscribe(info => {;
// Add listenter to products