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

Angular发起HTTP请求时按钮点击旋转动画不生效问题咨询

问题根因

你的写法本身的错误在异步逻辑的执行顺序,Angular的HTTP请求本身就是异步非阻塞的,不会阻塞主线程执行。
subscribe()方法只会注册请求结束后的回调函数,不会等待请求返回再执行后续代码,所以你刚把refreshAnimation设为true,下一行的this.refreshAnimation = false就立刻执行了,相当于刷新状态只存在了几毫秒,Angular变更检测还没来得及把CSS类渲染到DOM上,状态就被重置,动画自然无法触发。

修复方案

你只需要把重置动画状态的逻辑放到HTTP请求结束的回调中即可,推荐使用RxJS的finalize操作符,不管请求成功、失败还是被主动取消,都会执行重置逻辑,避免请求异常后图标一直旋转的问题。

修改后的TS代码如下:

// 首先导入finalize操作符
import { finalize } from 'rxjs/operators';

// 原有refresh方法修改为
refresh(region : string)
{
    this.refreshAnimation = true;
    this.myservice.refreshAll()
      .pipe(
        takeUntil(this.destroy$),
        // 所有请求结束场景都会触发该回调
        finalize(() => this.refreshAnimation = false)
      )
      .subscribe(_ => this.loadMyData());
}

你现有的HTML和CSS代码没有问题,不需要修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:00:00