Friday, 27 May 2016

javascript - Angular 2 - Using 'this' inside setTimeout




I have a function like so in my class



  showMessageSuccess(){


var that = this;
this.messageSuccess = true;

setTimeout(function(){
that.messageSuccess = false;
},3000);

}



How can I re-write this so I don't have to store a reference to 'this' in the 'that' var? If I use 'this' inside the setTimeout, the messageSuccess bool doesn't seem to change/get updated.


Answer



You need to use ArrowFunction ()=> to preserve this context within setTimeout.



// var that = this; // no need of this line
this.messageSuccess = true;

setTimeout(()=>{ //<<<--- using ()=> syntax
this.messageSuccess = false;

}, 3000);

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...