代码之家  ›  专栏  ›  技术社区  ›  AhammadaliPK

角度5:如何从列表中动态绑定按钮上的事件

  •  1
  • AhammadaliPK  · 技术社区  · 7 年前

    <div id="home" class="tab-pane fade in" style="text-align:left;opacity: 1;" >
       
      <button *ngFor="let tool of toolArray" class="m-btn btn btn-secondary" type="button" (click)="{{tool.ToolMethod}}()" placement="bottom"
          ngbTooltip="{{tool.Tooltip}}">
          <img src={{tool.ToolImgPath}} alt="" width="24" height="24"/>
      </button>
    
    </div>

    比方说,我有一些由管理员管理的工具,如果用户登录,他可以使用这些工具进行编辑。

     let toolArray = [
        {ToolCategory: "analysis"
        ToolId: 96
        ToolImgPath: "images/zoom-selection.png"
        ToolMethod: "zoomToClickedFeature"
        ToolName: "an_zoomto_selected"
        Tooltip: "Zoom To Selected Feature"}
    ]
    

    如果我使用ngFor将其添加到html中,就会出现如下错误

    Got interpolation ({{}}) where expression was expected
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Andrei Tătar    7 年前

    如果方法是控制器的成员,则应使用 this 比如: (click)="this[tool.ToolMethod]()"

    下面是一个工作示例:

    https://stackblitz.com/edit/angular-q2l54d?file=src%2Fapp%2Fapp.component.html

        2
  •  2
  •   Jimmy Hedström    7 年前

    (click)="{{tool.ToolMethod}}()" (click)="tool.ToolMethod()"

    public zoomToClickedFeature() {
      console.log("do something");
    }
    
    public toolArray = [
      {
        ToolCategory: "analysis",
        ToolId: 96,
        ToolImgPath: "images/zoom-selection.png",
        ToolMethod: this.zoomToClickedFeature,
        ToolName: "an_zoomto_selected",
        Tooltip: "Zoom To Selected Feature"
      }
    ];
    

    数组和函数必须是组件的类属性。

    推荐文章