web-dev-qa-db-fra.com

html2canvas in Angular - Impossible d'appeler une expression dont le type n'a pas de signature d'appel

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.

8
Jgascona

Résolu! Je vous remercie :)

Enfin j'ai importé de cette façon:

import html2canvas from 'html2canvas';
16
Jgascona

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.

5
eCamK

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.

Voir cet article .

1
velval