Angular FileReader无法在2中工作

Angular FileReader无法在2中工作,angular,typescript,filereader,Angular,Typescript,Filereader,我正在尝试使用FileReader上载图像,它在调试模式下工作正常(当在this.name=image.files[0].name;行上设置断点时),但如果我停用断点,它将不工作测试详细信息。图像设置为空字符串。我也试过设置超时,它也不起作用 var fileByteArray = ''; const Image = this.AccUserImage.nativeElement; if (Image.files && Image.files[0]) { this.Ac

我正在尝试使用
FileReader
上载图像,它在调试模式下工作正常(当在
this.name=image.files[0].name;
行上设置断点时),但如果我停用断点,它将不工作<代码>测试详细信息。图像设置为空字符串。我也试过设置超时,它也不起作用

var fileByteArray = '';
const Image = this.AccUserImage.nativeElement;

if (Image.files && Image.files[0]) {
    this.AccUserImageFile = Image.files[0];
}


var fileReader = new FileReader();
fileReader.onload = function (event) {
    var imageData = fileReader.result;
    var bytes = new Uint8Array(imageData);
    //for (var i = 0; i < bytes.length; i++) {
    for (var i = 0; i < bytes.length; ++i) {
        fileByteArray += (String.fromCharCode(bytes[i]));
    }
};
if (fileReader && Image.files && Image.files.length) {
    fileReader.readAsArrayBuffer(Image.files[0]);
    }
}

this.name = Image.files[0].name;
const ImageFile: File = this.AccUserImageFile;

let length = this.form.value.addresses.length;
this.testList = [];
for (let i = 0; i < length; i++) {
    let testDetails = new testDto();
    testDetails.image = btoa(fileByteArray);
}
var fileByteArray='';
const Image=this.accountrimage.nativeElement;
if(Image.files&&Image.files[0]){
this.accountrimagefile=Image.files[0];
}
var fileReader=newfilereader();
fileReader.onload=函数(事件){
var imageData=fileReader.result;
var字节=新的Uint8Array(imageData);
//对于(变量i=0;i
可能测试应该在fileReader.load函数的末尾,因为您的测试依赖于fileReader.onload函数至少完成一次,所以fileByteArray不是未定义的

fileReader.onload = function (event) {
    var imageData = fileReader.result;
    var bytes = new Uint8Array(imageData);
    for (var i = 0; i < bytes.length; ++i) {
        fileByteArray += (String.fromCharCode(bytes[i]));
    }
    if (fileReader && Image.files && Image.files.length) {
      fileReader.readAsArrayBuffer(Image.files[0]);
    }
    for (let i = 0; i < length; i++) {
      let testDetails = new testDto();
      testDetails.image = btoa(fileByteArray);
    }
};
fileReader.onload=函数(事件){
var imageData=fileReader.result;
var字节=新的Uint8Array(imageData);
对于(变量i=0;i
当前实现中存在一些问题,我将在下面发布工作代码。第一个问题是,我使用JavaScript风格调用
onload
函数。第二个问题是我必须将所有代码放在
onload
函数中,因为
readAsArrayBuffer
是一个异步调用

var fileByteArray = '';
const Image = this.AccUserImage.nativeElement;
if (Image.files && Image.files[0]) {
    this.AccUserImageFile = Image.files[0];
}
var fileReader = new FileReader();

fileReader.onload = (e) => {
    var imageData = fileReader.result;
    var bytes = new Uint8Array(imageData);
    for (var i = 0; i < bytes.length; ++i) {
        fileByteArray += (String.fromCharCode(bytes[i]));
    }

    this.name = Image.files[0].name;
    const ImageFile: File = this.AccUserImageFile;
    let length = this.form.value.addresses.length;
    this.testList = [];
    for (let i = 0; i < length; i++) {
        testDetails.image = btoa(fileByteArray);
    }
}
fileReader.readAsArrayBuffer(Image.files[0]);
var fileByteArray='';
const Image=this.accountrimage.nativeElement;
if(Image.files&&Image.files[0]){
this.accountrimagefile=Image.files[0];
}
var fileReader=newfilereader();
fileReader.onload=(e)=>{
var imageData=fileReader.result;
var字节=新的Uint8Array(imageData);
对于(变量i=0;i
我不明白你的意思。它将如何使我的代码工作?我认为这个名称与图像无关