Gọi một hàm trên sự kiện nhấp chuột trong Angular 2


95

Làm thế nào để khai báo một hàm bên trong một thành phần (typecript) và gọi nó trong một sự kiện nhấp chuột trong Angular 2? Sau đây là mã cho cùng một chức năng trong Angular 1 mà tôi yêu cầu mã Angular 2:

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

// bộ điều khiển

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

5
Tại sao bạn lại gắn thẻ angular2nếu đây là một Angular 1ứng dụng?
BeetleJuice

Mô tả ít, cấu trúc câu sai, mã xấu. tất cả kết quả là hiểu sai. mọi người đây là một câu hỏi Angular1!
Reyraa

1
Bất cứ điều gì tôi đã viết trong mã, tôi muốn làm tương tự trong angle2.
không xác định

Bài cũ, nhưng tôi khuyên bạn nên xem "chuyến tham quan của Heros" từ tài liệu góc 2.
Jeff

Nó là Angular 1 hay Angular 2? Nó nên được chỉ định
Sudhir Kaushik

Câu trả lời:


120

Mã thành phần:

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

}

Lượt xem:

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

Như bạn có thể thấy trong mã, tôi đang khai báo trình xử lý nhấp chuột như thế này (click)="open($event, item)"và gửi cả sự kiện và mục (được khai báo trong *ngFor) đến open()phương thức (được khai báo trong mã thành phần).

Nếu bạn chỉ muốn hiển thị mặt hàng và bạn không cần lấy thông tin từ sự kiện, bạn có thể thực hiện (click)="open(item)"và sửa đổi openphương pháp như thế nàypublic open(item) { ... }


làm thế nào về biến mất menu này sau khi đăng xuất? databootstrapperpage của tôi sử dụng menu như thế này và mọi trang đẩy khác đều có của riêng chúng nhưng sau khi đăng xuất và trang đăng nhập goto, menu này xuất hiện bất ngờ nên sau khi nhấp chuột biến mất nhưng tôi không thể xử lý được.
saber tabatabaee yazdi

@sabertabatabaeeyazdi, bạn có thể vui lòng tạo bản demo Stackblitz về vấn đề của bạn để tôi có thể xem qua không?
sebaferreras

57

Chuyển chính xác sang Angular2 + như sau:

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

cũng trong tệp thành phần của bạn:

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

Điểm mấu trong mã điều khiển của bạn, mà đọc $scope.myFunc={nên $scope.myFunc = function() {các function()phần quan trọng là phải chỉ ra, đó là một chức năng!

Mã bộ điều khiển được cập nhật sẽ là

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

1

Điều này đã làm việc cho tôi: :)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.