Como declarar uma função dentro de um componente (texto digitado) e chamá-la em um evento click no Angular 2? A seguir está o código para a mesma funcionalidade no Angular 1 para o qual eu exijo o 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
desconhecido
fonte
fonte
angular2
se este é umAngular 1
aplicativo?Respostas:
Código do 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); } }
Visão:
<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 você pode ver no código, estou declarando o manipulador de cliques dessa forma
(click)="open($event, item)"
e enviando o evento e o item (declarado no*ngFor
) para oopen()
método (declarado no código do componente).Se você deseja apenas mostrar o item e não precisa obter informações do evento, você pode apenas fazer
(click)="open(item)"
e modificar oopen
método como estepublic open(item) { ... }
fonte
A transferência exata para Angular2 + é a seguinte:
<button (click)="myFunc()"></button>
também em seu arquivo 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"); } }
fonte
https://angular.io/guide/user-input - há um exemplo simples.
fonte
A linha em seu código de controlador, que
$scope.myFunc={
deve ser$scope.myFunc = function() {
afunction()
parte, é importante indicar, é uma função!O código do controlador atualizado seria
app.controller('myCtrl',['$scope',function($cope){ $scope.myFunc = function() { console.log("function called"); }; }]);
fonte
Isso funcionou para mim: :)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void { alert('PlanId:' + planId + ' ParticipantId:' + participantId); }
fonte