2016-07-07 25 views
1

要素のIDを取得しようとすると、この問題がTypeScript(Angular2用)で機能します。 この例を参照してください:TypeScript - 'Node'型に 'id'プロパティがありません

<div id="search"> 
    <div id="field1"></div> 
    <div id="field2"></div> 
</div> 

私は、ネストされたdiv要素の一つのIDを取得しようとすると、私は通常、これを行うことができます。

var element = document.getElementById("search"); 
var subelement = element.childNodes; 
subelement[1].id; 

それから私は、「フィールド2」を持つことになります。

TypeScriptでこれを実行しようとすると、メッセージが表示されます。プロパティ 'id'がタイプ 'Node'に存在しません。結果として私のコードは動作しません。 もっと良い方法がない限り、別の要素の中の入れ子要素を知る必要があるので、私は本当にこれのための解決策が必要です。

+0

あなたは@DavidLがあるだけでなく –

+0

を動作しませんでした活字体のコードを投稿しないのはなぜ同じコード、私が使用した余分なものはキャストvar要素= document.getElementById( "search");しかしそれは何の違いもありません – KESO

+0

これはに似ています:http://stackoverflow.com/questions/38234810/get-htmlelement-from-element/38235298#38235298 –

答えて

2

ノードは単なる要素以上のものでよく、必ずしもidプロパティを持つ必要はありません。要素のコレクションである.childrenを使用する必要があります。

0

私はAngular2でDOM要素を参照するためのdocument.getElementByIdを使用するのではなく、このような@ViewChildを活用しています:

@Component({ 
    (...) 
    template: ` 
    <div #search> 
     <div id="field1"></div> 
     <div id="field2"></div> 
    </div> 
    ` 
}) 
export class SomeComponent { 
    @ViewChild('search') searchElement:ElementRef; 

    ngAfterViewInit() { 
    let domElement = searchElement.nativeElement; 
    (...) 
    } 
} 
関連する問題