转换document.getElementById以访问TypeScript中的文件

问题描述 投票:1回答:3

我对angularjs很新。我无法在线找到解决方案。我想从文件中读取文本。我试图效仿这个例子。 FileReader not loading file properly using AngularJS

但是,由于我使用的是TypeScript,因此我收到此行的错误

document.getElementById('fileInput').files[0];

错误:“HTMLElement”类型中不存在属性“文件”。

请建议我如何使用这些文件。

javascript html angularjs file-upload typescript
3个回答
3
投票

从这个例子来看,这应该可以正常工作,也许你在那里做错了。但是,您可以像这样测试您的代码,用fileChanged()替换fileChanged(event)然后通过event.target.files获取文件

function fileChanged(event) {
  var target = event.target || event.srcElement;
  console.log(target.files);
  console.log(document.getElementById('fileInput').files);
}
<div>
  <input ng-model="csv"
            onchange="fileChanged(event)"
            type="file" id="fileInput"/>
</div>

10
投票

我发现问题中的错误的另一种方法是替换:

document.getElementById('fileInput').files[0];

var input: any = document.getElementById('fileInput');
var file = input.files[0];

通过将输入定义为类型“any”,Typescript编译器不再引发错误。


1
投票

你应该把它投到HTMLInputElement。该接口将.files字段定义为FileList

/**
 * Returns a FileList object on a file type input object.
 */
readonly files: FileList | null;

interface FileList {
    readonly length: number;
    item(index: number): File;
    [index: number]: File;
}
© www.soinside.com 2019 - 2024. All rights reserved.