我知道在启动应用程序时可以使用Browseranimationmodule和Noopanimationsmodule。如果用户出于ada和其他原因请求动画,建议在运行时关闭动画的方法是什么?

最佳答案

可能有一个很好的解决方案,但它的工作角度为4.0.0:
(免责声明我找到了2.0代码的基础)
在app.module中添加以下导入:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AnimationDriver, ɵWebAnimationsDriver } from '@angular/animations/browser';

添加此函数:
export function animationFactory(): any {
  const noop = AnimationDriver.NOOP;
  const driver = new ɵWebAnimationsDriver();
  return {
    animate: (element: any, keyframes: {
        [key: string]: string | number;
    }[], duration: number, delay: number, easing: string, previousPlayers?: any[]) => {
      if (!wantToAnimate) {
        return noop.animate(element, keyframes, duration, delay, easing, previousPlayers);
      } else {
        return driver.animate(element, keyframes, duration, delay, easing, previousPlayers);
      }
    }
  };
};

导入浏览器动画模块
imports: [
  ...,
  BrowserAnimationsModule,
]

使用上面的factory函数提供animationdriver
providers: [
  ...,
  { provide: AnimationDriver, useFactory: animationFactory },
]

08-17 07:59