Llamar a una función al hacer clic en el evento en Angular 2


95

¿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");
    };
}]);

5
¿Por qué etiquetó angular2si se trata de una Angular 1aplicación?
BeetleJuice

Descripción escasa, oraciones estructuralmente incorrectas, código feo. todo el resultado en una comprensión incorrecta. gente, esta es una pregunta de Angular1!
Reyraa

1
Lo que sea que haya escrito en el código, quiero que haga lo mismo en angular2.
desconocido

Publicación antigua, pero recomiendo mirar el "tour de Heros" de la documentación de angular 2.
Jeff

¿Es Angular 1 o Angular 2? Debería haber sido especificado
Sudhir Kaushik

Respuestas:


120

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) al open()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 el openmétodo de esta manerapublic open(item) { ... }


¿Qué tal si desaparece este menú después de cerrar la sesión? mi databootstrapperpage que usa un menú como este y todas las demás páginas push tienen las suyas propias, pero después de cerrar sesión e ir a la página de inicio de sesión, este menú apareció inesperado, así que después de hacer clic desapareció, pero no puedo manejar esto.
saber tabatabaee yazdi

@sabertabatabaeeyazdi, ¿podría crear una demostración de Stackblitz con su problema para que pueda verlo?
sebaferreras

57

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");
  }
}


3

La línea en el código de su controlador, que $scope.myFunc={debe ser $scope.myFunc = function() {la function()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");
  };
}]);

1

Esto funcionó para mí :)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.