angular - ion-chip 关闭触发器、ion-item 按钮事件

标签 angular typescript ionic-framework ionic2 ionic3

我有一个 ionic 项目作为按钮,在其中放置了一个带有十字图标删除事件的 ionic 芯片。单击 ion-chip 删除按钮时,会触发 ion-item 事件而不是 ion-chip 事件。甚至 event.stopPropogation 也不起作用。

如何触发 ion-chip onclick 触发事件?

activity.html

<ion-content>
  <ion-list>
     <button ion-item style="color: #999" (click)="addProject()">
      <span *ngIf="selected_project == null">Project</span>
      <div *ngIf="selected_project != null">
        <ion-chip color="primary">
          <span style="margin-left: 10px"><i class="fa fa-book">&nbsp;{{ selected_project.name }}</i></span>
          <button ion-button clear color="light" (click)="deleteProject($event)">
            <ion-icon name="close-circle"></ion-icon>
          </button>
        </ion-chip>
      </div>
      <ion-icon name="add" item-right></ion-icon>
    </button>
  </ion-list>
<ion-content>

activity.ts

addProject(){
   //some code
}

deleteProject(event){
  event.stopPropagation(); //not working
}

最佳答案

问题不在于事件的传播,而在于该项目是一个按钮。在幕后,Ionic 做了很多事情来处理按钮事件,因此为了使其正常工作,您可以更改 ion-item成为一个项目而不是具有属性 ion-item 的按钮。请查看this working plunker

通过替换 <button ion-item ...></button>通过<ion-item tappable ...></ion-item>从 UI Angular 来看的结果是完全相同的,但是这次 event.preventDefault()将正常工作。

查看

  <ion-list>
     <ion-item tappable style="color: #999; cursor:pointer;" (click)="addProject($event)">
      <span *ngIf="selected_project == null">Project</span>
      <div *ngIf="selected_project != null">
        <ion-chip color="primary">
          <span style="margin-left: 10px"><i class="fa fa-book">&nbsp;{{ selected_project.name }}</i></span>
          <button ion-button clear color="light" (click)="deleteProject($event)">
            <ion-icon name="close-circle"></ion-icon>
          </button>
        </ion-chip>
      </div>
      <ion-icon name="add" item-right></ion-icon>
    </ion-item>
  </ion-list>

组件

@Component({...})
export class HomePage {

  public  selected_project = { name: 'DemoProject'}

    constructor() {}

    public addProject(event) {
    event.stopPropagation();
    alert('Add project');
  }

  public deleteProject(event) {
    event.stopPropagation();
    alert('Delete project ');
  }

}

关于angular - ion-chip 关闭触发器、ion-item 按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46189688/

相关文章:

angular - forkJoin() 未发出调用而其参与者正在发出罚款

typescript - 如何使用 TypeScript 查找数组项? (一种现代的,更简单的方法)

typescript - 有什么方法可以在 tsconfig 中设置严格模式下使用 Loopback 4?

javascript - 如何为相同数据类型的多个实例重用 Redux reducer 逻辑?

angularjs - 如何在 ionic 中打开视频选择器 View 或图库?

angular - 如何处理/通知用户 APP_INITIALIZER 中不可恢复的异常?

javascript - 使用 Electron 截取桌面截图

javascript - ionic : show image from file path from device

android - ionic 页面转换不适用于具有推送功能的页面

javascript - Angular 2 : new router and templateProvider practice from Angular 1