sstorie / experiments

A repository to capture simple code experiments
140 stars 205 forks source link

messages never update, only displays at end of call in a batch #26

Closed johnfabian closed 6 years ago

johnfabian commented 6 years ago

I've implemented this in Angular 5 but the Task component is never updated but I can see it updating in the console.

private appendStatusUpdate(ev: ChannelEvent): void {
        // Just prepend this to the messages string shown in the textarea
        //
        let date = new Date();
        switch (ev.Data.State) {
            case "starting": {
                this.messages = `${date.toLocaleTimeString()} : starting\n` + this.messages;
                break;
            }

            case "complete": {
                this.messages = `${date.toLocaleTimeString()} : complete\n` + this.messages;
                break;
            }

            default: {

                console.log(ev.Data.PercentComplete);  <--This updates

                /****NOTE : THIS IS NOT UPDATING ******/
                this.messages = `${date.toLocaleTimeString()} : ${ev.Data.State} : ${ev.Data.PercentComplete} % complete\n` + this.messages;    
            }
        }
    }
johnfabian commented 6 years ago

I had to wrap the one line in NgZone and it works as expected in angular 5

this._ngZone.run(()=>{
                    this.messages = `${date.toLocaleTimeString()} : ${ev.Data.State} : ${ev.Data.PercentComplete} % complete\n` + this.messages;
                });