Search code examples
angulartypescriptngfor

angular viewChild for dynamic elements inside ngFor


My template has something like this:

<div *ngFor="let data of array">
    <div #div></div>
</div>

is there a way for me to name each div differently using the #? And if so, how can I access them later in my TS file?

by the way, what are these # called? I cant search for them since I have now idea what these are (I just know what they're used for)


Solution

  • TL;DR Use ViewChildren instead of ViewChild

    As @Commerical Suicide mentioned you cannot set the references dynamically.

    The #div is called template reference variable.

    You can access your divs via ViewChildren in you *.ts file.

    Sample: @ViewChildren('div') divs: QueryList<ElementRef>

    Then you can call multiple methods on your new QueryList, like forEach or find.