Angular2 + Typescript + FileReader.onLoad =属性不存在

da4*_*a45 17 javascript filereader typescript angular

我正在使用FileReader接口和它的异步方法readAsText()来读取本地文本文件,之后当调用onload事件时,我尝试读取我的文件,我的源代码如下所示:

export class ReadFileComponent {
   text: string;

   readFile(): void {
     let reader=new FileReader();
     reader.onload = function(e) {
        this.text=reader.result;
     }
     reader.readAsText(file);   
   }
}
Run Code Online (Sandbox Code Playgroud)

编译失败,因为"FileReader"类型上不存在属性"text "

我认为这是由于EventListener接口不接受对象,

有人请解决这类问题吗?

多谢你们,

Gün*_*uer 47

如果要this在回调内部使用,请使用箭头功能,否则将无法使用

reader.onload = (e) => {
    this.text=reader.result;
}
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

  • 这就是你需要使用`()=>`而不是`function()`的原因.箭头函数确保回调中的`this`始终指向当前类. (4认同)