我正在使用来自HostListener
来自div元素的enter key
函数。我的div元素在{2}处的角度为ngFor
,我需要将ngFor
的索引值传递给HostListener
函数。
我的代码:
在HTML中
<div *ngFor="let Add of Adds; let i = index">
<div class="data_card" (keydown)="edit($event,i)">
{{Add.name}}
</div>
</div>
在组件中
@HostListener('document:keydown', ['$event','index'])
edit(event: KeyboardEvent,index) {
if (event && event.keyCode === 13) {
consol.log(index)
}
}
在这个控制台日志中,我得到索引的未定义值。请建议我如何将此参数传递给此HostListener
函数。
提前致谢
答案 0 :(得分:1)
您需要做的事情很少:
1)删除外部div并使DIV
元素可选 - 添加tabindex
属性:
<div *ngFor="let data of jsondata; let i = index" (keydown)="handleKeyboardEvent($event,i)" tabindex="{{i}}">
<h2>{{data.data1}}</h2>
</div
2)将handleKeyboardEvent
移至App组件并删除@HostListener
绑定:
export class App {
jsondata:any = [];
constructor() {...}
handleKeyboardEvent(event: KeyboardEvent,index): void {
3)添加事件处理代码:
handleKeyboardEvent(event: KeyboardEvent,index): void {
if (event.keyCode === 13) {
event.target.nextElementSibling.focus();
}
}
答案 1 :(得分:0)
创建指令并传递问题@Input obj: {item: Item, index: number };
然后在@HostListener
内使用this.obj
答案 2 :(得分:-1)
这种方法不起作用。