无法触发 click 或 keyup 事件

Can't get click or keyup event to fire

所以我已经设法让 *ngFor 输出我的数据,但是当我尝试在某些事情发生变化时触发事件时似乎没有任何反应。

这是我的 HTML:

    <ion-content padding class="home">
      {{ searchString }}
      {{ selectedOption }}
      <ion-searchbar (keyup)="onKey(box.value)"></ion-searchbar>


      <ion-list radio-group>
        <ion-list-header>
          <span class="listHeader">Items</span><span class="pullRight">Showing 3 of 3</span>
        </ion-list-header>

        <ion-item *ngFor="let x of Options" (click)="changeSelection(x)">
          <ion-label>{{ x.displayName }}</ion-label>
          <ion-radio value="{{ x.id }}"></ion-radio>
        </ion-item>
      </ion-list>

</ion-content>

我希望 (click) 事件触发,运行 javascript 中的 changeSelection 方法:

import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';


@Component({
  templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
    reportOptions;
    selectedOption;
    searchString;
    constructor(private navController: NavController) {

    this.Options = [    {
                                displayName: 'Test Option 1',
                                id: '1'
                            },
                            {
                                displayName: 'Test Option 2',
                                id: '2'
                            },
                            {
                                displayName: 'Test Option 3',
                                id: '3'
                            }
                          ];
    this.selectedOption = 'Hello';

    }

    changeSelection(x) {
        this.selectedOption = 'world';
    }
    onKey(value: string) {
        this.searchString= value;
    }

}

看不到我在这里遗漏了什么,是我遗漏了导入还是更复杂的东西?

changeSelection 方法将被调用,如果有的话。 我在您发布的代码中没有看到任何内容。

问题是您没有使用 [(ngModel)] 将这些元素绑定到正确的属性。

因此,首先与 ion-radio 元素相关,您添加了 radio-group 属性

<ion-list radio-group>

但是您忘记将这些单选按钮绑定到 Component 中的 selectedOption 属性。通过在每次 select 收音机时添加 ngModel,该值将自动分配给 selectedOption。如果您仍想获取该广播的文本,您可以订阅 ion-radio 元素中的 ionSelect 事件,如下所示:

<ion-radio value="{{ x.id }}" (ionSelect)="changeSelection(x)"></ion-radio>

然后您必须在组件中添加该方法:

public changeSelection(x: any) {
    this.selectedOptionText = x.displayName;
}

关于 ion-searchbar,错误是相同的,该元素未绑定到组件中的任何 属性。您可以通过以下方式将其绑定到 searchString 属性:

<ion-searchbar [(ngModel)]="searchString"></ion-searchbar>

如果您仍想 运行 触发 blur 事件的一些代码,您可以从 ion-searchbar 通过在 () 之间添加事件名称并从您的组件分配一个方法。例如,要将 ionBlur 事件与我们的 onBlur 方法绑定,您可以这样做:

<ion-searchbar [(ngModel)]="searchString" (ionBlur)="onBlur()"></ion-searchbar>

您可以找到一个 working plunker here 并且您的代码可以正常工作。