Angular 2 --aot导致AnimationEntryMetadata失败

Gar*_*mon 4 typescript angular

我的代码工作正常,ng build并且ng build --prod当我添加--aot到命令时,它失败并出现以下错误:

Uncaught Error: Module build failed: Error: C:/Users/dremache/Code/control-f2/client/src/app/transitions.ts (11,14): Exported variable 'pageTransitions' has or is using name 'AnimationEntryMetadata' from external module "C:/Users/dremache/Code/control-f2/client/node_modules/@angular/core/src/animation/metadata" but cannot be named.)

这是transitions.ts:

import { trigger,
  state,
  style,
  transition,
  animate,
  keyframes } from '@angular/core';


export const pageTransitions = 

  trigger('slideInOut', [

    state('in', style({transform: 'translateX(0)'})),

    transition('void => *', [
      style({transform: 'translateX(-60px)',opacity: '0'}),
      animate('300ms ease-out')
    ]),
    transition('* => void', [
      animate('300ms ease-out', style({transform: 'translateX(-60px)'}))
    ])
  ]);
Run Code Online (Sandbox Code Playgroud)

这是导入它的组件:

//other imports
import { pageTransitions } from './transitions';

@Component({
  //other properties
  animations: [ pageTransitions, 

      trigger('items', [
         // states and transitions here.. removing for cleanliness
      ]
  })
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我这样做是为了避免重新定义相同的动画.这些动画正在应用于void => *创建页面过渡动画的组件.

Gar*_*mon 7

固定它!

在我的transitions.ts文件中,我需要更改:

export const pageTransitions = 
Run Code Online (Sandbox Code Playgroud)

至:

export const pageTransitions: AnimationEntryMetadata = 
Run Code Online (Sandbox Code Playgroud)

(以及AnimationEntryMetadata从中导入@angular/core)

  • 很好,对于Angular 4+而言,它现在是`AnimationTriggerMetadata` (3认同)