Comment déclarer une fonction dans un composant (TypeScript) et l'appeler lors d'un événement click dans Angular 2? Voici le code de la même fonctionnalité dans Angular 1 pour lequel j'ai besoin du code Angular 2:
<button ng-click="myFunc()"></button>
//manette
app.controller('myCtrl', ['$scope', function($cope) {
$scope.myFunc= {
console.log("function called");
};
}]);
Code du composant:
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);
}
}
Vue:
<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>
Comme vous pouvez le voir dans le code, je déclare le gestionnaire de clics comme ceci (click)="open($event, item)"
et envoie à la fois l'événement et l'élément (déclaré dans le *ngFor
) à la méthode open()
(déclarée dans le code du composant).
Si vous souhaitez simplement afficher l'élément et que vous n'avez pas besoin d'obtenir d'informations sur l'événement, vous pouvez simplement faire (click)="open(item)"
et modifier la méthode open
comme ceci public open(item) { ... }
Le transfert exact vers Angular2 + est comme ci-dessous:
<button (click)="myFunc()"></button>
également dans votre fichier de composant:
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 - voici un exemple simple.
La ligne dans votre code de contrôleur, qui lit $scope.myFunc={
devrait être $scope.myFunc = function() {
la partie function()
est importante à indiquer, c'est une fonction!
Le code du contrôleur mis à jour serait
app.controller('myCtrl',['$scope',function($cope){
$scope.myFunc = function() {
console.log("function called");
};
}]);
Cela a fonctionné pour moi: :)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
alert('PlanId:' + planId + ' ParticipantId:' + participantId);
}