Panggil fungsi pada event click di Angular 2


95

Bagaimana cara mendeklarasikan fungsi di dalam komponen (skrip ketikan) dan memanggilnya pada acara klik di Angular 2? Berikut adalah kode untuk fungsi yang sama di Angular 1 yang saya perlukan kode Angular 2:

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

// pengontrol

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

5
Mengapa Anda memberi tag angular2jika ini adalah Angular 1aplikasi?
BeetleJuice

Deskripsi sedikit, kalimat salah secara struktural, kode jelek. semua hasilnya adalah pemahaman yang salah. orang ini adalah pertanyaan Angular1!
Reyraa

1
Apa pun yang saya tulis dalam kode saya ingin melakukan yang sama di angular2.
tidak diketahui

Posting lama, tapi saya sarankan melihat "tur Pahlawan" dari dokumentasi sudut 2.
Jeff

Apakah itu Angular 1 atau Angular 2? Seharusnya sudah ditentukan
Sudhir Kaushik

Jawaban:


120

Kode komponen:

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

}

Melihat:

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

Seperti yang Anda lihat di kode, saya mendeklarasikan handler klik seperti ini (click)="open($event, item)"dan mengirimkan event dan item (dideklarasikan di *ngFor) ke open()metode (dideklarasikan di kode komponen).

Jika Anda hanya ingin menampilkan item dan Anda tidak perlu mendapatkan info dari acara tersebut, Anda cukup melakukan (click)="open(item)"dan memodifikasi openmetode seperti inipublic open(item) { ... }


Bagaimana kalau menghilangkan menu ini setelah logoff? databootstrapperpage saya menggunakan menu seperti ini dan setiap halaman push lainnya memiliki halaman mereka sendiri tetapi setelah logoff dan halaman login goto menu ini tidak terduga muncul sehingga setelah klik menghilang tetapi saya harus menangani ini.
saber tabatabaee yazdi

@sabertabatabaeeyazdi dapatkah Anda membuat demo Stackblitz dengan masalah Anda sehingga saya dapat melihatnya?
sebaferreras

57

Transfer yang tepat ke Angular2 + adalah sebagai berikut:

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

juga di file komponen Anda:

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

Baris dalam kode controller, yang berbunyi $scope.myFunc={harus $scope.myFunc = function() {yangfunction() bagian penting untuk menunjukkan, itu adalah fungsi!

Kode pengontrol yang diperbarui adalah

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

1

Ini berhasil untuk saya: :)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.