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

    sendFile(file) { 

    var reader = new FileReader(); 

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

    } 

Почему filePhotoValue внутри reader.onload консолей "undefined" вместо xexe? Ошибок компиляции нет, и я хотел бы установить значение filePhotoValue inside reader.onload.Машинопись переменная внутри file.onload неопределен

ответ

2

Пока вы находитесь внутри метода onload, вы теряете контекст «этого», который находится вне метода. Чтобы это исправить, есть два решения: Сохранить «этот» контекст в другой переменной:

sendFile(file) { 

    var reader = new FileReader(); 

    var self = this;  

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

    } 

или связать текущий контекст функции:

sendFile(file) { 

    var reader = new FileReader(); 

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

    }