ngЕсли перед сохранением div в формате PDF не работает время - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь сохранить огромный div в файл PDF. Прямо перед тем, как выполнить весь процесс сохранения, я удаляю несколько остатков этого div с помощью * ngIf (и логического isExport)

Право, когда я нажимаю на функцию DownloadPage (), баланс, который я хочу удалить, исчезает, но когда файл сохраняется, они все еще присутствуют. как получилось?

Должен ли я вызвать метод задержки, чтобы дать DOM время для обновления?

public downloadPage(): void {
  this.isExport = true;
  this.withoutFloorDetailsBlock = true;

  var data = document.getElementById('plan-cp');
  html2canvas(data).then(canvas => {
    // Few necessary setting options  
    var imgWidth = 208;
    var pageHeight = 295;
    var imgHeight = canvas.height * imgWidth / canvas.width;
    var heightLeft = imgHeight;

    const contentDataURL = canvas.toDataURL('image/png')
    let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF  
    var position = 0;
    pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
    let now = new Date();
    let date = formatDate(now,"MMddyyyy",'en-EN');
    let name = this.asset.property_name + '_plan_' + date + '.pdf';
    pdf.save(name); // Generated PDF   
  });
}

1 Ответ

1 голос
/ 24 мая 2019

Как вы и сказали, вам нужно будет отложить, чтобы дать угловое время для обновления страницы (цикл дегустации), чтобы сделать это с помощью setTimeout, в большинстве случаев решение

      this.isExport = true;

      setTimeout( () => {
        this.withoutFloorDetailsBlock = true;

        var data = document.getElementById('plan-cp');
        html2canvas(data).then(canvas => {
          // Few necessary setting options  
          const imgWidth = 208;
          const pageHeight = 295;
          const imgHeight = canvas.height * imgWidth / canvas.width;
          const heightLeft = imgHeight;

          const contentDataURL = canvas.toDataURL('image/png')
          let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF  
          const position = 0;
          pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
          let now = new Date();
          let date = formatDate(now,"MMddyyyy",'en-EN');
          let name = this.asset.property_name + '_plan_' + date + '.pdf';
          pdf.save(name); // Generated PDF   
        });
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...