未在Ionic 5上激发按下事件

zf9nrax1  于 2022-12-16  发布在  Ionic
关注(0)|答案(5)|浏览(199)

我想在多个项目上实现多选(ion-item-sliding的列表)当通过将(press)添加到每个ion-item-sliding来按下其中一个几秒钟时,似乎从未触发按下事件。我将按下事件移动到ion-item,但仍然没有发生任何事件。然后我尝试在ion-button上直接测试press事件,发现press事件是问题所在,因为当我将其更改为click时,它工作得很好。

<ion-button (press)="itemPressed()">Test</ion-button>
itemPressed() {
    console.log("expecting to work");
}
cxfofazt

cxfofazt1#

除了@Arj 1411的答案之外,在“@angular/platform-browser”导入中添加HammerModule,这应该是可行的。

yqyhoc1h

yqyhoc1h2#

嗨,您可以使用Hammer.js实现长按
1.从npm install hammerjs — save安装Hammer.js
2.对src/main.ts文件进行如下更改

import { enableProdMode } from '@angular/core';
    import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
    import { AppModule } from './app/app.module';
    import { environment } from './environments/environment';
    **import "hammerjs";** 
    
    if (environment.production) {
      enableProdMode();
    }
platformBrowserDynamic().bootstrapModule(AppModule)   .catch(err => console.log(err));

3.在模板和组件文件上

<ion-button (press)="onPress($event)" (pressup)="onPressUp($event)"> Test </ion-button>

onPress($event) {
    console.log("onPress", $event);
}

onPressUp($event) {
    console.log("onPressUp", $event);
}

试试这个。如果这个不像预期的那样工作,让我知道。我会编辑我的答案

yv5phkfx

yv5phkfx3#

我认为您可以使用下面提到的tap和click事件来代替press。

<ion-button (click)="itemPressed()">Test</ion-button>

<ion-button tappable (tap)="itemPressed()">Test</ion-button>

如果你想使用长按事件。有NPM插件avilable在下面的网址你可以使用..这可以帮助你。
https://www.npmjs.com/package/ionic-long-press
Ionic long press event on cards

zsbz8rwp

zsbz8rwp4#

最好的解决方案实际上是使用contextmenu事件而不是press。这是本机支持的,因此不需要HammerJS(或其他任何东西)。

ttisahbt

ttisahbt5#

目前,对于离子6来说,这可能是最好的选择
https://forum.ionicframework.com/t/ionic-5-long-press-gesture-example/188746/7
它的工作原理就像一个魅力,你不需要安装任何模块.

相关问题