[英]How to pass a dynamic template reference variable in a function using angular 6
我正在尝试实现此功能但出现错误
<div *ngFor="let item of items; index as i">
<div #menu{{i}}>
//Some code
</div>
<div (onClick)="Clicked($event,menu{{i}})">
//Some other code
</div>
在 [Clicked($event,menu{{i}})] 的第 19 列处得到了插值 ({{}})
有谁知道如何修复它?
您可以使用返回QueryList
的ViewChildren
装饰器:您不再需要使用索引,Angular 将为您处理所有这些。
查看此stackblitz以查看它的实际效果(在单击按钮之前打开您的控制台)
我刚刚遇到了同样的问题,并通过引用我拥有模板引用变量的同一元素的唯一 id 解决了它,我相信你可以做同样的事情。
<div class="outer-element" #outerElement>
<div *ngFor="let item of items; index as i">
<div id="menu{{i}}">
//Some code
</div>
<div (onClick)="Clicked($event, outerElement.querySelector('#menu' + i)">
//Some other code
</div>
</div>
</div>
动态模板引用在 Angular 中不可行。 您可以尝试这两种解决方案。
解决方案1:
将 'id' 属性附加到 div 元素,即 'menu1' 并通过单击方法将 id 传递给组件并使用 document.querySelector() 访问 DOM
解决方案2:
创建一个属性指令,您可以在其中将 id 作为 @Input 传递并在构造函数()中访问 elementRef。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.