Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置组件';文件读取器事件中的属性值_Javascript_Typescript_Angular - Fatal编程技术网

Javascript 如何设置组件';文件读取器事件中的属性值

Javascript 如何设置组件';文件读取器事件中的属性值,javascript,typescript,angular,Javascript,Typescript,Angular,我有这个部分: export class FileFormComponent { _base64: string; handleFile($event){ var input = $event.target; var reader = new FileReader(); reader.onloadend = function() { this._base64 = reader.result } reader.readAsDataURL(input.

我有这个部分:

export class FileFormComponent {
  _base64: string;

 handleFile($event){
   var input = $event.target;
   var reader = new FileReader();
   reader.onloadend = function() {
     this._base64 = reader.result
   }
   reader.readAsDataURL(input.files[0]);
   console.log(this._base64);
 }
}

问题在于
console.log(this.\u base64)
logs
undefined
。在
onloadend
事件中,似乎
未引用组件的上下文。如何从
FileReader
onloadend
事件内部设置
\u base64
属性的值

我会使用箭头函数。通过这种方式,您可以使用词法This(对应于组件实例):

有关更多详细信息,请参阅此链接:


    • 我在这种情况下使用的模式是:

      var self = this;
      reader.onloadend = function(){
          console.log(self._base64);
      }
      

      这只是因为您的
      console.log
      onloadend
      回调之前被调用;-)您可以在视图中绑定
      \u base64
      属性以查看其值。类似这样的:
      {{{u base64}
      。通过这种方式,您将看到值是否已更新…仍然未定义这在JavaScript中是一种解决方案,但在TypeScript中,箭头函数是一种方法。它不会改变
      参考。感谢您的教育:)
      var self = this;
      reader.onloadend = function(){
          console.log(self._base64);
      }