Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 2 - Using 'this' inside setTimeout [duplicate]

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.

like image 417
user2085143 Avatar asked Oct 16 '22 08:10

user2085143


1 Answers

You need to use Arrow function ()=> ES6 feature to preserve this context within setTimeout.

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

setTimeout(()=>{                           // <<<---using ()=> syntax
    this.messageSuccess = false;
}, 3000);
like image 187
Nikhil Shah Avatar answered Oct 19 '22 21:10

Nikhil Shah