如何在组件(typescript)中声明一个函数并在Angular 2中的click事件中调用它? 以下是Angular 1中相同功能的代码,我需要Angular 2代码:
<button ng-click="myFunc()"></button>
//控制器
app.controller('myCtrl', ['$scope', function($cope) {
$scope.myFunc= {
console.log("function called");
};
}]);
答案 0 :(得分:82)
组件代码:
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);
}
}
查看:
<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>
正如您在代码中看到的那样,我宣布点击处理程序如此(click)="open($event, item)"
并将事件和项目(在*ngFor
中声明)发送到{{1方法(在组件代码中声明)。
如果您只想展示该项目,而不需要从该活动中获取信息,则可以open()
执行此(click)="open(item)"
方法并修改open
方法public open(item) { ... }
}
答案 1 :(得分:42)
到 Angular2 + 的确切转移如下:
<button (click)="myFunc()"></button>
也在你的组件文件中:
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");
}
}
答案 2 :(得分:9)
https://angular.io/guide/user-input - 这是一个简单的例子。
答案 3 :(得分:3)
控制器代码中的行$scope.myFunc={
应该是$scope.myFunc = function() {
,function()
部分对于指示来说很重要,这是一个函数!
更新的控制器代码将是
app.controller('myCtrl',['$scope',function($cope){
$scope.myFunc = function() {
console.log("function called");
};
}]);
答案 4 :(得分:1)
这对我有用::)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
alert('PlanId:' + planId + ' ParticipantId:' + participantId);
}