You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RxJS Subscribe被调用两次问题求助(附Ionic完整代码)

解决Ionic中RxJS Subscribe被触发两次的问题

嗨,我一眼就发现问题所在啦!你遇到的subscribe被执行两次的情况,根源完全在模板代码的事件绑定上——你的提交按钮同时绑定了(ngSubmit)和(click)两个事件,而且都指向了entrar()方法。当你点击按钮时,这两个事件会先后触发,直接导致entrar()被调用两次,里面的subscribe自然也就跟着执行两次了。

给你两个简单的解决方案:

  • 方案一(推荐):移除按钮上的(click)绑定
    你的按钮是type="submit",放在<form>标签内部,点击它本来就会自动触发表单的ngSubmit事件,完全不需要额外绑定click事件。修改后的按钮代码如下:

    <button type="submit" color="branco" style="height:50px" ion-button block outline round>Entrar</button>
    
  • 方案二(仅特殊场景使用):移除表单的ngSubmit绑定
    如果你因为某些需求非要保留按钮的click事件,那可以把表单上的(ngSubmit)="entrar()"去掉,让提交逻辑完全由按钮的click事件处理。修改后的表单标签:

    <form [formGroup]="form">
    

修改完成后,你再点击按钮测试一下,entrar()只会被调用一次,subscribe也就只会执行一次,控制台不会再重复打印true/false和done啦。如果还不确定,你可以在entrar()方法开头加一句console.log('entrar方法被调用'),就能直观看到调用次数的变化。

内容的提问来源于stack exchange,提问作者Guilherme Pereira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:48:15