在Angular 2中调用click事件上的函数

unk*_*own 70 javascript typescript angular

如何在组件(typescript)中声明一个函数并在Angular 2中的click事件中调用它?以下是Angular 1中相同功能的代码,我需要Angular 2代码:

<button ng-click="myFunc()"></button>
Run Code Online (Sandbox Code Playgroud)

//控制器

app.controller('myCtrl', ['$scope', function($cope) {
    $scope.myFunc= {
        console.log("function called");
    };
}]);
Run Code Online (Sandbox Code Playgroud)

seb*_*ras 89

组件代码:

import { Component } from "@angular/core";

@Component({
  templateUrl:"home.html"
})
export class HomePage {

  public items: Array<string>;

  constructor() {
    this.items = ["item1", "item2", "item3"]
  }

  public open(event, item) {
    alert('Open ' + item);
  }

}
Run Code Online (Sandbox Code Playgroud)

视图:

<ion-header>
  <ion-navbar primary>
    <ion-title>
      <span>My App</span>
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content>
  <ion-list>
    <ion-item *ngFor="let item of items" (click)="open($event, item)">
      {{ item }}
    </ion-item>
  </ion-list>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

正如您在代码中看到的那样,我正在声明这样的单击处理程序(click)="open($event, item)",并将事件和项目(在其中声明*ngFor)发送给open()方法(在组件代码中声明).

如果您只是想显示该项目而您不需要从该事件中获取信息,您可以这样做(click)="open(item)"并修改这样的open方法public open(item) { ... }


Ali*_*eza 46

准确转移到Angular2 +如下:

<button (click)="myFunc()"></button>
Run Code Online (Sandbox Code Playgroud)

也在您的组件文件中:

import { Component, OnInit } from "@angular/core";

@Component({
  templateUrl:"button.html" //this is the component which has the above button html
})

export class App implements OnInit{
  constructor(){}

  ngOnInit(){

  }

  myFunc(){
    console.log("function called");
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 10

https://angular.io/guide/user-input - 这是一个简单的例子.


小智 7

这对我有用::)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
Run Code Online (Sandbox Code Playgroud)
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
Run Code Online (Sandbox Code Playgroud)