我的组件定义如下:
@Component({
moduleId: module.id,
templateUrl: 'my.template.html',
animations: [
trigger('fadeInOut', [
state('in', style({opacity: 1})),
transition('void => *', [
style({
opacity: 0
}),
animate(500)
]),
transition('* => void', [
animate(500, style({
opacity: 0
}))
]),
])
]
})
export class MyComponent implements OnInit, OnDestroy {
public stage: number = 0;
...
transitionDone(transitionEvent: any): void {...}
...
}
模板看起来像这样:
<div
*ngIf="stage"
@fadeInOut
(@fadeInOut.done)="transitionDone($event)"
></div>
应用程序在使用JIT编译时工作正常,完成回调被正确触发,但是当我尝试使用ngc(v.6.0.0)编译它时,它给出了mi错误:
提供的参数与呼叫目标的任何签名都不匹配。
这是因为它为 AnimationOutput 生成了错误的参数数量的ngfactory文件:
this.registerAnimationOutput(
this._el_0,
new import24.AnimationOutput('fadeInOut','done'), <-- should be 3 args
this.eventHandler(this._handle__fadeInOut_done_0_1.bind(this))
);
如果我从模板中删除完成回调,则编译可以正常工作。
我正在使用Angular 2 RC.6
答案 0 :(得分:0)
更新:正在处理角度“2.0.2”
我遇到了同样的问题,看起来在角度动画或AOT编译器中存在内部错误。