¿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

angular2si se trata de unaAngular 1aplicació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 elopenmé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