web-dev-qa-db-fra.com

Typescript: la propriété 'src' n'existe pas sur le type 'HTMLElement'

Je reçois une erreur de TypeScript et je ne sais pas comment la corriger. Le code fonctionne bien lorsqu'il est "compilé" mais je ne peux pas corriger l'erreur. J'ai extrait les parties qui impliquent l'erreur de mon code. Je suppose que je dois prédéfinir le SRC mais je ne sais pas comment.

Erreur msg dans l'éditeur et sur la compilation Gulp: 

"La propriété 'src' n'existe pas sur le type 'HTMLElement'.à la ligne 53, col 17"

...

element:HTMLElement; /* Defining element */

'''
this.element = document.createElement('img'); /*creating a img*/

'''

C’est la méthode que j’utilise pour rendre l’élément, la position, en haut et à gauche, tout fonctionne sans donner d’erreur. 

display() {
   this.element.src = this.file; /*This is the line that gives the error*/
   this.element.style.position = "absolute";
   this.element.style.top = this.pointX.toString() + "px";
   this.element.style.left = this.pointY.toString() + "px";

   document.body.appendChild(this.element);
};
14
Björn Hjorth

Parce que src n'est pas une propriété du type HTMLElement, mais de HTMLImageElement.

Si vous êtes certain d'obtenir un élément img, vous pouvez déclarer votre variable avec le sous-type correct:

element: HTMLImageElement; /* Defining element */

// ...

this.element = document.createElement('img'); /*creating a img*/

De même, vous voudrez peut-être jeter un coup d’œil sur ce que document.createElement renvoie. C'est le même type si vous spécifiez "img" comme argument.

14
John Weisz

Utilisation de la coulée:

(<HTMLImageElement>document.querySelector(".company_logo")).src
26
Oded Breiner
document.getElementById('img').setAttribute( 'src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' );

Définir la source via la méthode d'attribut set.

2
aruna harichandan

Utiliser un casting comme @ oùDatApp.com m'a suggéré de travailler. Utiliser le sélecteur de requête comme ceci: 

querySelector("img[name='menubanner']")
0
kierandes

Vous devez le déclarer en tant que HTMLImageElement, qui possède une propriété src.

0
SLaks