コンポーネント内で関数を宣言し(TypeScript)、Angular 2のclickイベントで呼び出す方法は?以下はAngular 2コードが必要なAngular 1の同じ機能のコードです。
<button ng-click="myFunc()"></button>
//コントローラ
app.controller('myCtrl', ['$scope', function($cope) {
$scope.myFunc= {
console.log("function called");
};
}]);
部品コード:
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
で宣言される)項目の両方を(コンポーネントコードで宣言される)open()
メソッドに送ります。
単にアイテムを表示したいだけで、イベントから情報を取得する必要がない場合は、単に(click)="open(item)"
を実行し、public open(item) { ... }
のようにopen
メソッドを変更します。
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");
}
}
https://angular.io/guide/user-input - 簡単な例があります。
$scope.myFunc={
を読むコントローラコードの行は$scope.myFunc = function() {
であるべきですfunction()
部分は示すことが重要です、それは関数です!
更新されたコントローラコードは次のようになります。
app.controller('myCtrl',['$scope',function($cope){
$scope.myFunc = function() {
console.log("function called");
};
}]);
これは私のために働いた::)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
alert('PlanId:' + planId + ' ParticipantId:' + participantId);
}