Angular 2에서 클릭 이벤트에 대한 함수 호출


95

컴포넌트 (typescript) 내부에서 함수를 선언하고 Angular 2의 클릭 이벤트에서 호출하는 방법은 무엇입니까? 다음은 Angular 2 코드가 필요한 Angular 1의 동일한 기능에 대한 코드입니다.

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

//제어 장치

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

5
앱인 angular2경우 왜 태그를 Angular 1했나요?
BeetleJuice

부족한 설명, 구조적으로 잘못된 문장, 추악한 코드. 모든 결과는 잘못된 이해로 이어집니다. 사람들이 이것은 Angular1 질문입니다!
Reyraa 2016-10-24

1
내가 코드로 작성한 것은 angular2에서 똑같이합니다.
알 수없는

이전 게시물이지만 angular 2 문서에서 "Tour of Heros"를 보는 것이 좋습니다.
제프

Angular 1입니까, Angular 2입니까? 지정되어야합니다
Sudhir Kaushik

답변:


120

구성품 코드 :

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

}

전망:

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

코드에서 볼 수 있듯이 이와 같은 클릭 처리기를 선언하고 (click)="open($event, item)"이벤트와 항목 (에서 선언 됨 *ngFor)을 open()메서드 (구성 요소 코드에서 선언 됨 )로 보냅니다 .

항목 만 표시하고 이벤트에서 정보를 얻을 필요가없는 경우 다음 (click)="open(item)"과 같이 open메서드를 수행 하고 수정할 수 있습니다.public open(item) { ... }


로그 오프 후이 메뉴는 어떻게 사라지나요? 이와 같은 메뉴를 사용하는 내 databootstrapperpage와 다른 모든 푸시 페이지에는 자체가 있지만 로그 오프하고 로그인 페이지로 이동하면이 메뉴가 예기치 않게 나타 났으므로 클릭 후 사라졌지 만 icant 처리합니다.
세이버 tabatabaee 야 즈디

@sabertabatabaeeyazdi 문제가 있는 Stackblitz 데모 를 만들어 제가 살펴볼 수 있도록 해 주시겠습니까?
sebaferreras

57

Angular2 + 로의 정확한 전송 은 다음과 같습니다.

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

또한 구성 요소 파일에서 :

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

읽어 컨트롤러 코드의 행, $scope.myFunc={해야 $scope.myFunc = function() {function() 부분 것을 나타내는 것이 중요합니다. 그것은 함수입니다!

업데이트 된 컨트롤러 코드는 다음과 같습니다.

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

1

이것은 나를 위해 일했습니다 :)

<button (click)="updatePendingApprovals(''+pendingApproval.personId, ''+pendingApproval.personId)">Approve</button>
updatePendingApprovals(planId: string, participantId: string) : void {
  alert('PlanId:' + planId + '    ParticipantId:' + participantId);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.