Виклик функції при події клацання в Angular 2


95

Як оголосити функцію всередині компонента (typecript) і викликати її під час натискання в Angular 2? Нижче наведено код тієї самої функціональності в Angular 1, для якого мені потрібен код Angular 2:

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

// контролер

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

5
Чому ви позначили тегом, angular2якщо це Angular 1додаток?
BeetleJuice

Мізерний опис, структурно неправильні речення, потворний код. весь результат у неправильному розумінні. люди, це питання Angular1!
Рейраа,

1
Що б я не писав у коді, я хочу зробити те саме в angular2.
невідомо

Стара публікація, але я рекомендую подивитися на "екскурсію Героєм" із документації angular 2.
Джефф,

Це кутовий 1 чи кутовий 2? Це мало бути вказано
Судхір Каушик

Відповіді:


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) { ... }


як щодо зникнення цього меню після виходу? моя сторінка завантаження даних за допомогою меню, подібного до цього, і для кожної іншої сторінки натискання має своє, але після виходу та переходу на сторінку входу це меню несподівано з'явилося, тому після натискання кнопки зникло, але icant вирішив це.
saber tabatabaee yazdi

@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);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.