Angular 4:动态设置局部变量#

有没有办法动态设置#id,角度用来构造@ViewChild元素引用的HTML属性?

具体需要:我有以下模板,通过迭代* ngFor创建,我想在迭代上分配Angular id .

<ul>
   <li *ngFor="let link of links">
  </li>
</ul>

在解释之后,最终得到如下结果:

<ul>
  <li #link1>
   </li>
  <li #link2>
   </li>
 </ul>

现在我知道了许多其他方法来获取元素,我可以将#分配给ul元素等,但是想知道是否有办法在ngFor上进行 .

EDIT AFTER SEEING THE ANSWERS AND TRYING OUT COMBINATIONS:

似乎没有办法为* ngFor生成的单个元素分配不同的局部变量标识符 . 您可以获得所有这些,如接受的答案建议,或者只是获取父元素,并从那里找到您的方式 .

回答(3)

3 years ago

尽管常规变量和 # 之间看似相似,但可以将多个元素分配给单个本地模板引用变量:

<ul>
   <li *ngFor="let link of links" #linkRef></li>
</ul>

可以通过以下方式获得:

@ViewChildren('linkRef') linkRefs;

3 years ago

你可以使用这样的代码:

<ul>
    <li *ngFor="let item of items;let i = index;" #itemRef{{i}}>{{item.xyz}}</li>
</ul>

看这个问题:enter link description here

3 years ago

您可以使用索引 .

<ul>
<li *ngFor="let link of links; let i=index;">
{{link.title}}{{i}} 
</li>
</ul>