Angular 2'de tıklama olayında bir işlevi çağırın


95

Bir bileşenin (typcript) içinde bir işlev nasıl bildirilir ve onu Angular 2'de bir tıklama olayında çağırırsınız? Aşağıda, Angular 2 kodunu istediğim Angular 1'deki aynı işlevin kodu verilmiştir:

<button ng-click="myFunc()"></button>

// denetleyici

app.controller('myCtrl', ['$scope', function($cope) {
    $scope.myFunc= {
        console.log("function called");
    };
}]);

5
angular2Bu bir Angular 1uygulama ise neden etiketlediniz ?
BeetleJuice

Yetersiz açıklama, yapısal olarak yanlış cümleler, çirkin kod. tüm sonuçlar yanlış anlamaya neden olur. insanlar bu bir Angular1 sorusudur!
Reyraa

1
Kodda yazdıklarım ne olursa olsun, aynısını angular2'de yapmak istiyorum.
Bilinmeyen

Eski gönderi, ancak açısal 2 belgelerinden "Kahramanlar turu" na bakmanızı öneririm.
Jeff

Açısal 1 mi yoksa Açısal 2 mi? Belirtilmesi gerekirdi
Sudhir Kaushik

Yanıtlar:


120

Bileşen kodu:

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

}

Görünüm:

<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>

Kodda görebileceğiniz gibi, tıklama işleyicisini bu şekilde bildiriyorum (click)="open($event, item)"ve hem olayı hem de öğeyi (içinde bildirilen *ngFor) open()yönteme (bileşen kodunda bildirilen ) gönderiyorum .

Sadece öğeyi göstermek istiyorsanız ve etkinlikten bilgi almanıza gerek yoksa (click)="open(item)", openyöntemi şu şekilde yapabilir ve değiştirebilirsinizpublic open(item) { ... }


oturumu kapattıktan sonra bu menünün kaybolmasına ne dersiniz? databootstrapper sayfamın bunun gibi menüyü kullanması ve diğer her push sayfasının kendine ait bir tane var, ancak oturum kapattıktan ve oturum açma sayfasına gittikten sonra bu menü beklenmedik göründü, bu yüzden tıklama kayboldu ama icant bunu hallediyor.
saber tabatabaee yazdi

@sabertabatabaeeyazdi , sorununuzla ilgili bir Stackblitz demosu oluşturabilir misiniz , böylece ona bir göz atabilirim?
sebaferreras

57

Angular2 + 'ya tam aktarım aşağıdaki gibidir:

<button (click)="myFunc()"></button>

ayrıca bileşen dosyanızda:

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

Okur Denetleyiciniz kodu, çizgi $scope.myFunc={olmalıdır parçası belirtmek önemlidir, bu bir fonksiyondur!$scope.myFunc = function() {function()

Güncellenmiş kontrolör kodu şöyle olacaktır:

app.controller('myCtrl',['$scope',function($cope){
    $scope.myFunc = function() {
    console.log("function called");
  };
}]);

1

Bu benim için çalıştı: :)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.