Jak zadeklarować funkcję wewnątrz komponentu (maszynopisu) i wywołać ją na zdarzeniu kliknięcia w Angular 2? Poniżej znajduje się kod dla tej samej funkcjonalności w Angular 1, dla której potrzebuję kodu Angular 2:
<button ng-click="myFunc()"></button>
//kontroler
app.controller('myCtrl', ['$scope', function($cope) {
$scope.myFunc= {
console.log("function called");
};
}]);
javascript
angular
typescript
nieznany
źródło
źródło
angular2
jeśli jest toAngular 1
aplikacja?Odpowiedzi:
Kod komponentu:
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); } }
Widok:
<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>
Jak widać w kodzie, deklaruję procedurę obsługi kliknięcia w ten sposób
(click)="open($event, item)"
i wysyłam zarówno zdarzenie, jak i pozycję (zadeklarowaną w*ngFor
) doopen()
metody (zadeklarowanej w kodzie komponentu).Jeśli chcesz tylko pokazać element i nie potrzebujesz informacji z wydarzenia, możesz po prostu zrobić
(click)="open(item)"
i zmodyfikowaćopen
metodę w ten sposóbpublic open(item) { ... }
źródło
Dokładny transfer do Angular2 + wygląda jak poniżej:
<button (click)="myFunc()"></button>
również w pliku komponentu:
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"); } }
źródło
https://angular.io/guide/user-input - oto prosty przykład.
źródło
Linia w kodzie kontrolera, który brzmi
$scope.myFunc={
powinny być część jest ważne, aby wskazać, że jest to funkcja!$scope.myFunc = function() {
function()
Zaktualizowany kod kontrolera to
app.controller('myCtrl',['$scope',function($cope){ $scope.myFunc = function() { console.log("function called"); }; }]);
źródło
To zadziałało dla mnie: :)
<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void { alert('PlanId:' + planId + ' ParticipantId:' + participantId); }
źródło