javascript - 将函数分配给 *ngFor 中的事件处理程序

标签 javascript angular templates

我正在 Angular 2 中制作一个上下文菜单组件,其中每个菜单项都调用它自己的函数,该函数由模型定义。我不知道如何将函数嵌入到模板中。我所拥有的一个例子如下。我的具体问题在这一行:

<li *ngFor="let item of items" (click)="{{item.click}}">{{item.name}}</li>

添加 onclick 处理程序时。我怎样才能做到这一点?

import {Component, ViewChild, ElementRef} from '@angular/core';

@Component({
  selector: 'app-context-menu',
  template: `<ul [hidden]="isHidden" #menu>
    <li *ngFor="let item of items" (click)="{{item.click}}">{{item.name}}</li>
  </ul>`
})
export class ContextMenuComponent {

    @ViewChild('menu') menu: ElementRef;
    private items: Object[];
    private isHidden: boolean = true;

    constructor() {
      this.items =  [
        {name: 'One', click: () => alert('One')},
        {name: 'Two', click: () => alert('2')},
        {name: 'Three', click: () => alert('3')},
        {name: 'Four', click: () => alert('4')}
      ];
    }

} 

最佳答案

模板中的语法应该是:

<li *ngFor="let item of items" (click)="item.click()">{{item.name}}</li>

关于javascript - 将函数分配给 *ngFor 中的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273837/

相关文章:

css - 当建议的结果显示在我们的搜索框中时,我们无法点击到建议的产品 sku;我们该如何解决这个问题?

javascript - 从类导出 Google 距离矩阵时,async-await 不起作用

javascript - 将省略号应用于文本时如何显示工具提示?

html - angular2 sm-popup 边缘的语义 ui

C++ 任何具有特定值类型的迭代器?

c# - 如何在StringTemplate中创建foreach? 。网

javascript - 切换图标框架7

php - 使用加载了 Ajax 内容的 jQuery 'click' 函数?

typescript - Angular 2.0 - @ViewQuery 和 @Query 有什么区别

javascript - Angular2 中没有服务提供者错误,为什么我需要将其注入(inject)到它的父组件中?