2016-02-21 152 views
7

Typescriptからエラーが発生しましたが、修正方法がわかりません。コードは "コンパイルされた"ときに正常に動作しますが、エラーを修正することはできません。私は自分のコードからエラーを含む部分を抽出しました。私はsrcを事前定義する必要があるとは思うが、どうしたらよいかわからない。エディタでTypescript:プロパティ 'src'が 'HTMLElement'タイプに存在しません

エラーmsgとガルプでコンパイル:

「プロパティ 'srcが' タイプに存在しません「HTMLElement'.atライン53 COL 17"

... 

element:HTMLElement; /* Defining element */ 

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

''' 

です要素、位置、上と左をすべてレンダリングするために実行するメソッドは、エラーを出すことなく実行されます。

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); 
}; 
+0

事実上、 'HTMLElement.prototype'はHTMLImageElement.prototype'がすべき' 'src'を持っていますが、しません。私はTypeScriptについて考えていませんが、 'element'を' HTMLElement'の代わりに 'HTMLImageElement'と定義してみてください。 – Oriol

+0

'this.element.setAttribute(" src "、this.file);'どちらでも動作します。 –

+0

@ c-smileあなたの答えが正しい解決策ではないとは思うが、私は問題を扱う別の方法で通知を感謝する –

答えて

10

srcHTMLElementタイプのプロパティではなく、HTMLImageElementです。

あなたが特定されている場合は、img要素を得るでしょう、あなたは正しいサブタイプを使用して変数を宣言することがありますが:

element: HTMLImageElement; /* Defining element */ 

// ... 

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

また、あなたは何document.createElementリターンを見てしたい場合があります。引数に"img"を指定すると、まったく同じ型です。属性セット法による

(<HTMLImageElement>document.querySelector(".company_logo")).src 
+0

私の問題を解決してくれてありがとう、HTMLElementは一般的なDOM要素それはすべてに合った。 –

+0

あなたの前提は完全に正しいです。 'HTMLImageElement'は、実際には' HTMLElement'です。より正確には、それはサブタイプです。しかし、すべての要素に 'src'属性が含まれているわけではないので、この場合はサブタイプ化の理由があります。 –

+0

その説明をありがとうございました –

0

あなたがsrc性質を持っているHTMLImageElement、としてそれを宣言する必要があります。

17

0
document.getElementById('img').setAttribute('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='); 

セットソース:鋳物を使用して

0

@ whereDatApp.comのようなキャストを使用すると、私の仕事がうまくいっています。このようなクエリセレクタを使用:

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

[コードをフォーマットしてください](https://stackoverflow.com/editing-help) – Dwhitz

関連する問題