2016-10-15 2 views
2

私は、Angularの* ngForを使って反復処理を行うオブジェクトの配列を持っています。Angular2添付ngレンダリングされたHTML要素をデータに変換する

アイテムがレンダリングされた後、そのオブジェクトをレンダリングするHTMLノードを参照するオブジェクト(nativeElement)に新しいプロパティを設定します。

次のコードは目標を示していますが、明らかに機能しません。

<div *ngFor="let obj of arrayOfObjs" 
    [ngInit]="obj.nativeElement = thisDivNode"> 

</div> 

どのようにしてobjの要素参照を最もクリーンな方法で設定できますか?

+0

ベータ版または安定版を使用している角度のバージョン – nifCody

+0

私は安定/最終を使用しています – parliament

答えて

1

あなただけのディレクティブを作成し、それにアイテムを渡すと、ディレクティブは

@Directive({ 
    selector: '[addElement]' 
}) 
class AddElementDirective implements OnInit, OnDestroy { 
    @Input('addElement') obj: any; 

    constructor(private el: ElementRef) {} 

    ngOnInit() { 
    this.obj.nativeElement = this.el.nativeElement; 
    } 

    ngOnDestroy() { 
    this.obj.nativeElement = null; 
    } 
} 

それからちょうど個人的に

<div *ngFor="let item of data" [addElement]="item"> 
</div> 

私はこのことを考えるようにそれを使用するアイテムに要素を割り当てさせることができあなたが思いつくマークアップの曲芸よりもきれいです。

+0

私はこれが好きです。 ngForに属性内を渡さずに現在の「アイテム」を与えるように頼むことができればさらに良いでしょう。 のようなものを内部的に自動処理します。それは可能ですか? – parliament

+0

また、これにはngOnDestroyが本当に必要ですか?なぜこれがメモリリークを引き起こすのか説明できますか?アイテムがコレクションから削除された場合、それが適切にクリーンアップされないことをどのように確認できますか? – parliament

関連する問題