readThis(inputValue: any): void {
this.contImage = inputValue.files.length;
for (var i = 0; i < inputValue.files.length; i++) {
let file: File = inputValue.files[i];
let myReader: FileReader = new FileReader();
myReader.onloadend = (e) => {
if(file.size <= 4000000){
this.imageValues.push(myReader.result);
}else{
swal(
'Ops! Imagem muito grande',
'Algumas imagens não puderam ser enviados pois excede o tamanho maximo de 5 Megas :/',
'error'
);
}
}
myReader.readAsDataURL(file);
}
this.editeImage();
}
editeImage(){
console.log(this.imageValues[3]);
}
答案 0 :(得分:0)
你被异步性所欺骗。您之前调用editeImage
函数的位置,您无法保证必要的数据已完成加载。您可以在editeImage
方法中调用onloadend
函数,以确保您可以使用数据。
readThis(inputValue: any): void {
this.contImage = inputValue.files.length;
for (var i = 0; i < inputValue.files.length; i++) {
let file: File = inputValue.files[i];
let myReader: FileReader = new FileReader();
myReader.onloadend = (e) => {
if(file.size <= 4000000){
this.imageValues.push(myReader.result);
if(this.imageValues.length === 4) this.editeImage();
}else{
swal(
'Ops! Imagem muito grande',
'Algumas imagens não puderam ser enviados pois excede o tamanho maximo de 5 Megas :/',
'error'
);
}
}
myReader.readAsDataURL(file);
}
}
editeImage(){
console.log(this.imageValues[3]);
}