J'essaie d'utiliser la bibliothèque html2canvas dans un projet Angular 8.
J'ai également essayé d'installer les types html2canvas dans mon projet par npm install --save @types/html2canvas
mais ça ne marche toujours pas.
Modèle:
<div #myform>
<form>
...
</form>
</div>
Composant:
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import * as html2canvas from 'html2canvas';
@Component({
selector: 'app-pdf-viewer',
templateUrl: './pdf-viewer.component.html',
styleUrls: ['./pdf-viewer.component.scss']
})
export class PdfViewerComponent {
@ViewChild('myform', { static: false, read: ElementRef }) pdfForm: ElementRef;
constructor() {}
pdfDownload() {
html2canvas(this.pdfForm.nativeElement).then(canvas => {
const imgData = canvas.toDataURL('image/png');
document.body.appendChild(canvas);
});
}
}
Mon intention est de rendre le formulaire en tant que canevas, mais l'application renvoie l'erreur:
ERREUR dans src/app/grid/pdf-viewer/pdf-viewer.component.ts (19,5): erreur TS2349: Impossible d'appeler une expression dont le type n'a pas de signature d'appel. Tapez 'typeof import (" myroute ") 'vous n'avez pas pris en charge les signatures d'appel.
Résolu! Je vous remercie :)
Enfin j'ai importé de cette façon:
import html2canvas from 'html2canvas';
Pour Angular 8, voir ce lien: https://github.com/niklasvh/html2canvas/issues/1896#issuecomment-50612971
Fondamentalement, vous devez avoir installé la version 1.0.0-rc.1 de html2canvas pour que cela fonctionne.
A eu le même problème sur Angular 8 et la seule façon dont j'ai pu importer la bibliothèque sans erreur était d'utiliser require.