2017-09-14 2 views
1

私はループ内の要素を持っています。私はそれを矛盾を避けるためにidに変更したいだけです。私はいくつかの検索をしましたが、何かを見つけることができませんでした。どのようにAngularの要素のidを動的に変更しますか?

<div *ngFor="let location of job.tasks; let i = index"> 
    <div id="index-{{i}}"> 
    {{index}} 
    </div> 
</div> 

問題は、私はngOnInit document.getElementById('index-1')に呼び出したとき、それはまだIDが割り当てられていないので、それはnullを返します。

答えて

1

id属性内にngForインデックス(i)を連結します。

<div *ngFor="let location of job.tasks; let i = index"> 
    <div id="index-{{i}}"> 
    {{index}} 
    </div> 
</div> 

あなたは以上のループあなたのDOM ngForを照会する必要があり、あなたはngFor#template-variableを使用してこれを行うには

ngAfterViewInit(){ 
    console.log(document.getElementById('1')); 
} 

Demo Here


もっと正しい方法を同じ内部ngAfterViewInitライフサイクルイベントを行うことができますテンプレートとそれぞれのDOMを見つけるために@ViewChildrenデコレータ。

+0

それはうまくいったが、問題は私が思ったものではないことに気がついた。私は私のエラーを反映するために私の質問を更新しました。 – Jus10

関連する問題