首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AOT编译创建可重用动画

使用AOT编译创建可重用动画
EN

Stack Overflow用户
提问于 2017-10-24 23:29:25
回答 1查看 200关注 0票数 2

我正在尝试创建一个可重用的动画,但是在用角巩膜编译我的应用程序时,我得到了以下错误

Error encountered resolving symbol values statically. Calling function 'flyInOut', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function

不过,只有在使用AOT编译时才会发生这种情况。如果我将aot标志设置为false,那么它就能工作。

这是我的功能:

代码语言:javascript
复制
export function flyInOut(enter: string, leave: string, duration?: number): AnimationMetadata {
  const timing: number = duration || 100;
  return trigger('flyInOut', [
    state('in', style({ transform: 'translateX(0)' })),
    transition('void => *', [
      style({ transform: `translateX(${enter})` }),
      animate(timing),
    ]),
    transition('* => void', [
      animate(timing, style({ transform: `translateX(${leave})` })),
    ]),
  ]);
}

对于如何使它与AOT编译一起工作,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-06 23:02:59

这是官方回购中跟踪的一个已知问题。在函数中使用变量时会出现此问题。解决方法是从另一个导出函数获得该结果:

代码语言:javascript
复制
export function flyInOut(enter: string, leave: string, duration?: number): AnimationMetadata {
  return trigger('flyInOut', [
    state('in', style({ transform: 'translateX(0)' })),
    transition('void => *', [
      style({ transform: getTranslate(enter) }),
      animate(getDuration(duration)),
    ]),
    transition('* => void', [
      animate(100, style({ transform: getTranslate(leave) })),
    ]),
  ]);
}

在上面的示例中,我们调用getTranslategetDuration,而不是使用durationenterleave变量。然后,导出返回适当值的函数:

代码语言:javascript
复制
export function getDuration(duration: number): number {
  return duration || 100;
}

export function getTranslate(value: string): string {
  return `translateX(${value}%)`;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46921529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档