¿Cómo declarar una función dentro de un componente (mecanografiado) y llamarla en un evento de clic en Angular 2? A continuación se muestra el código para la misma funcionalidad en Angular 1 para el que necesito el código Angular 2:
<button ng-click="myFunc()"></button>
//controlador
app.controller('myCtrl', ['$scope', function($cope) {
$scope.myFunc= {
console.log("function called");
};
}]);
javascript
angular
typescript
desconocido
fuente
fuente
angular2
si se trata de unaAngular 1
aplicación?Respuestas:
Código de componente:
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); } }
Ver:
<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>
Como puede ver en el código, declaro el controlador de clics de esta manera
(click)="open($event, item)"
y envío tanto el evento como el elemento (declarado en*ngFor
) alopen()
método (declarado en el código del componente).Si solo desea mostrar el elemento y no necesita obtener información del evento, puede hacerlo
(click)="open(item)"
y modificar elopen
método de esta manerapublic open(item) { ... }
fuente
La transferencia exacta a Angular2 + es la siguiente:
<button (click)="myFunc()"></button>
también en su archivo de componente:
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"); } }
fuente
https://angular.io/guide/user-input : hay un ejemplo simple.
fuente
La línea en el código de su controlador, que
$scope.myFunc={
debe ser$scope.myFunc = function() {
lafunction()
parte que es importante indicar, ¡es una función!El código del controlador actualizado sería
app.controller('myCtrl',['$scope',function($cope){ $scope.myFunc = function() { console.log("function called"); }; }]);
fuente
Esto funcionó para mí :)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void { alert('PlanId:' + planId + ' ParticipantId:' + participantId); }
fuente