基于特征检测的条件角度动画

时间:2019-06-03 18:29:49

标签: angular angular-animations

我有一个角度动画,它将垂直扩展/折叠元素。在Chrome和Firefox中,这看起来不错。但是,对于其他不支持WebAnimations的浏览器,将使用Angular生成的CSSAnimation,并且overflow-y属性不会在那里转换,并且看起来很糟。

因此,作为一种解决方法,我通过根据对WebAnimations的支持来关闭动画,从而为这些浏览器制作了替代动画。

一切看上去都很好,并且工作得很好...直到我们在打开AOT编译功能的产品环境中进行构建之前,AOT都会编译掉对window.*的调用,因为通常它要求{{1} } ed。

我不能@Inject()进入动画,该怎么办?

这是我的双重动画,可以与JIT编译器一起很好地工作

@Inject

我是我的const animForWebAnimations: AnimationMetadata[] = [ state('*', style({ height: '*', })), state('void', style({ height: '0', 'overflow-y': 'hidden', })), //Same transition duration/easing when entering or leaving transition('* => *', animate(`300ms`)) ]; const animForCssAnimations: AnimationMetadata[] = [ state('*', style({ height: '*', 'transform-origin': 'center 0', transform: 'scaleY(1)' })), state('void', style({ height: '0px', 'transform-origin': 'center 0', transform: 'scaleY(0)' })), transition('* => *', animate(`300ms`)) ]; const expandCollapseAnimationMetadata = 'animate' in document.documentElement ? animForWebAnimations : animForCssAnimations; export const expandCollapseAnimation = trigger('expandCollapse', expandCollapseAnimationMetadata); ,我有一家工厂将提供值(因为app.module在AOT编译中产生了错误),如下所示:

useValue

我尝试将export function getWindowFactory(): Window { return window; } ... @NgModule({ declarations: [ AppComponent ], imports: [ ... ], providers: [ {provide: 'Window', useFactory: getWindowFactory}, ... ], bootstrap: [ AppComponent ] }) export class AppModule { } 函数导入到动画中,但是产生了此错误:

  

src \ app \ components \ my.component.ts(16,18)中的错误:“ MyComponent”的模板编译过程中发生错误

     

装饰器中不支持函数调用,但在'expandCollapseAnimation'中调用了'getWindowFactory'

     

'expandCollapseAnimation'在src \ app \ animations \ expand-collapse.animation.ts(38,13)处调用'getWindowFactory'。

现在看来,除非我在这里遗漏了一些东西,否则似乎没有办法制作条件动画。这可能吗?

0 个答案:

没有答案