angular2 Eigenschaft geändert hat Fehler

Habe ich eine Richtlinie app.service.ts speichert die app Daten, und ich versuche, diese Anweisung zu verwenden, von anderen Komponenten, so kann ich bekommen und den Status der app (die funktioniert).

aber es gibt mir diese Fehlermeldung, wenn ich versuche, Sie zu binden, eine Eigenschaft, die aus dieser Richtlinie auf die Ansicht

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]

hier bin ich versucht zu zeigen, laden-text, wenn appState.get().loadState == true

app.service.ts - Quelle

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>

übernehmen app.ts hat ein Kind Komponente home.ts geladen und an die view

Hause.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)
   );
 }
}
  • Sie können shared object für diese. Ich denke {{loadState}} im HTML wird immer Fehler schmeißen diese Weg. Eher versuchen zu binden, einige freigegebene variable verwendet, in Dienst. zB. _state={} ist ein gemeinsames Objekt. einige Eigenschaft und dann in html können Sie für den Zugriff durch {{appState._state.someProperty}}
  • gleiche Fehler
Schreibe einen Kommentar