Я перебираю массив в машинописи, чтобы сделать снимок div с идентификатором, равным индексу массива, и загрузить файл изображения.
Если в массиве было 2 строки, 2 изображения должныбыть загруженнымВот сценарий:
public toCanvas() {
let i = Object.keys(this.array).length;
Object.keys(this.array).forEach((key, index)=>{
var elem = document.getElementById(index.toString());
console.log(index)
html2canvas(elem).then(function(canvas) {
var generatedImage = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
window.location.href=generatedImage;
});
})
}
Используя Object.keys(this.array).forEach((key, index)
, я выполняю итерацию для получения индекса, а затем нахожу документ getElementId(index)
.
Проблема в том, что он всегда загружаетпоследнее изображение.
И в консоли индексы утешаются, в начале, а затем загружается изображение:
Сценарий html:
<mat-card [id]="i" *ngFor="let arrayOfData of array; let i=index; " class="example-card" #matCard>
Я пытался использовать while
внутри forEach()
:
public toCanvas() {
let i = Object.keys(this.array).length;
Object.keys(this.array).forEach((key, index) => {
while (i != -1) {
i--;
console.log(i)
var elem = document.getElementById(index.toString());
html2canvas(elem).then(function (canvas) {
var generatedImage = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
window.location.href = generatedImage;
});
}
})
}
И он делает то же самое.Он утешает индекс, пока не достигнет 0
, а затем загружает изображение последнего обнаруженного <mat-card>
РЕДАКТИРОВАТЬ
Здесь stackblitz рекурсивного метода, предоставленного @ xyz.