I have a directive app.service.ts which stores the app state data, and I'm trying to use this directive from other components so I can get and set the state of the app (which is working).
however it gives me this error when I try to bind a property from this directive to the view
EXCEPTION: Expression 'loading: {{loadState}} in App@0:23' has changed after it was checked. Previous value: 'false'. Current value: 'true' in [loading: {{loadState}} in App@0:23]
here I'm trying to show loading text, when appState.get().loadState == true
app.service.ts - source
import {Injectable} from 'angular2/core';
import {WebpackState} from 'angular2-hmr';
@Injectable()
export class AppState {
  _state = {}; // you must set the initial value
  constructor(webpackState: WebpackState) {
    this._state = webpackState.select('AppState', () => this._state);
  }
  get(prop?: any) {
    return this._state[prop] || this._state;
  }
  set(prop: string, value: any) {
    return this._state[prop] = value;
  }
} 
app.ts
import {AppState} from './app.service';
export class App{
   constructor(public appState: AppState) {
      this.appState.set('loadState', false);
   }
   get loadState() { 
      return this.appState.get().loadState;
   }
}
app.html
<div class="app-inner">
  <p>loading: {{loadState}}</p>
    <header></header>
  <main layout="column" layout-fill>
    <router-outlet></router-outlet>
  </main>
</div>
assume app.ts has a child component home.ts and loaded to the view
home.ts
 export class HomeCmp {
 page;
 constructor(private wp: WPModels, private appState: AppState) {}
 ngOnInit() {
   var pageId = this.appState.get().config.home_id;
   this.appState.set('loadState', true);    // before http request
   this.wp.fetch(WPEnpoint.Pages, pageId).subscribe(
     res => {
       this.page = res;
       this.appState.set('loadState', false);  // after http request
     },
     err => console.log(err)
   );
 }
}
 
     
     
     
    