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

时间:2017-01-19 09:00:39

标签: javascript angular typescript filereader

我正在使用 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);   
   }
}

编辑失败,因为" FileReader"

类型" text" 不存在

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

有人请解决这类问题吗?

谢谢你们,

2 个答案:

答案 0 :(得分:41)

如果你想在回调中使用this,请使用箭头功能,否则它将无效

reader.onload = (e) => {
    this.text=reader.result;
}

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

答案 1 :(得分:0)

您在这里使用常规的javascript函数:

$sql = "INSERT INTO NewCase VALUES (NULL, ?, ?, ?, ?, ?, ?, NULL)";
$stmt = $link->prepare($sql);
$stmt->bind_param("ssssss",$staffname, $category, $prioritylevel, $status, $checkdate, $summary);
$stmt->execute();

$sql = "INSERT INTO NewResident VALUES (NULL, ?,?,?, NULL, NULL, ?,?,?)";
$stmt = $link->prepare($sql);
$stmt->bind_param("ssssss",$nric, $residentname, $telephone, $street1, $street2, $postalcode);
$stmt->execute();

reader.onload = function(e) { this.text=reader.result; } 属于函数而非您的类。

使用箭头功能

this

或者

reader.onload = (e)=> {
            this.text=reader.result;
         }