ngFor与动态函数调用

时间:2018-09-19 13:28:30

标签: angular typescript

我有一个称为“动作”的对象数组。每个Action都有2个参数:函数名和一个布尔值(现在不重要了)。

let  actionsArray: Action[] = [{name:"save",enabled:true},{name:"describe",enabled:true},{name:"delete",enabled:true}]

然后我使用ngFor来显示功能列表。我想做的是动态地将每个Action的“ click”事件绑定到其功能。

<li *ngFor="let action of actionsArray">
        <button (click) ="this[action.name]()"> {{action.name}} </button>
</li>

我尝试了很多方法都没有成功。

1 个答案:

答案 0 :(得分:1)

我使用您的代码创建了pen,它可以正常工作。我还添加了另一种switch/case方法。

@Component({
  selector: 'my-app',
  template: `
    <li *ngFor="let action of actionsArray">
        <button (click) ="[action.name]()"> {{action.name}} </button>
        <button (click) ="callAction(action.name)"> {{action.name}} </button>
    </li>
  `
})
class AppComponent {  
  actionsArray: {name: string, enabled: boolean}[] = [{name:"save",enabled:true},{name:"describe",enabled:true},{name:"delete",enabled:true}]

  callAction(actionName: string) {
    switch(actionName){
      case 'save' : return this.save();
      case 'describe' : return this.describe();
      case 'delete' : return this.delete();
    }
  }

  save() {
    alert('save');
  }

  describe() {
    alert('describe');
  }

  delete() {
    alert('delete');
  }
}