web-dev-qa-db-fra.com

Angular 2 - Utilisation de 'this' dans setTimeout

J'ai une fonction comme ça dans ma classe

  showMessageSuccess(){

    var that = this;
    this.messageSuccess = true;

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

  }

Comment puis-je ré-écrire cela afin de ne pas avoir à stocker une référence à 'ceci' dans la variable 'ça'? Si j'utilise 'ceci' dans setTimeout, le message boeuf de MessageSuccess ne semble pas changer/être mis à jour.

104
user2085143

Vous devez utiliser ArrowFunction ()=> pour conserver this contexte dans setTimeout.

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

setTimeout(()=>{    //<<<---    using ()=> syntax
      this.messageSuccess = false;
 }, 3000);
287
micronyks