2016-07-20 7 views
0
undefined
filePhotoValue: any = "xexe"; 

    sendFile(file) { 

    var reader = new FileReader(); 

    reader.onload = function (e:any) { 
     console.log(this.filePhotoValue); 
    }; 

    } 

Warum filePhotoValue innerhalb reader.onload Konsolen "undefined" statt xexe? Es gibt keine Kompilierungsfehler und ich möchte einen Wert auf filePhotoValue inside reader.onload setzen.Typoskript Variable innerhalb file.onload ist

Antwort

2

Während Sie innerhalb der Onload-Methode sind, verlieren Sie den Kontext von "this", der außerhalb der Methode ist. Um dies zu beheben, haben Sie zwei Lösungen: Speichern Sie die „dieses“ Kontext in einer anderen Variablen:

sendFile(file) { 

    var reader = new FileReader(); 

    var self = this;  

    reader.onload = function (e:any) { 
     console.log(self.filePhotoValue); 
    }; 

    } 

oder binden den aktuellen Kontext auf die Funktion:

sendFile(file) { 

    var reader = new FileReader(); 

    reader.onload = function (e:any) { 
     console.log(this.filePhotoValue); 
    }.bind(this); 

    } 
Verwandte Themen