У меня был подобный опыт в ReactJS раньше. Поэтому я сделаю все возможное, чтобы переписать код, который я использовал для вас.
Вы можете использовать Promise.all () для асинхронной загрузки массива файлов:
onFileChangeInfo(event) {
const files = Array.from(event.target.files); // Get files in array form
// Map each file to a promise that resolves an array of files
const promises = files.map(file => {
return (new Promise(resolve, reject) => {
const reader = new FileReader();
reader.addEventListener('load', (ev) => {
resolve(ev.target.result);
}
reader.addEventListener('error', reject);
reader.readAsDataURL(file);
}
});
// Once all promises are resolved, store the file blob in your variable
Promise.all(promises).then(files => {
this.items.controls.patchValue({
'data_blob': files
},
}, error => { console.error(error); });
}
Я не знаю, как выглядит ваш код, поэтому я не знаю, для чего вы используете параметр "index". Но если this.items.controls
- это массив, в котором вы хотите хранить каждый файловый блоб, то вам не нужен «индекс».