【发布时间】:2019-06-07 14:52:23
【问题描述】:
我正在尝试使用 Angular Animation (Angular 7) 添加页面动画。它适用于某些页面,但其他一些页面会在每次触发动画时自动重新加载。
比如我从/data/test-data导航到/data/execute-model,先加载“execute-model”,触发ngOnInit,但是url变成了“/data/execute -模型?”并且页面刷新。我不知道“?”在哪里来自。取出动画后,导航无需重新加载页面即可工作。
对于有效的页面,它们具有完全相同的配置。我不确定问题出在哪里。
顺便说一句,只有当我使用按钮导航时才会发生这种情况,该按钮(单击)触发this.router.navigate(['/data/execute-model']); 如果我输入 url,动画将起作用并且不会重新加载。但这不是我想要的。
非常感谢您的帮助!
这是html:
div class="content-area" [@routeAnimations]="prepareRoute(outlet)">
<router-outlet #outlet="outlet"></router-outlet>
</div>
这是组件 ts:它返回 stateChangeExpr 作为动画触发器的字符串
prepareRoute(outlet: RouterOutlet) {
return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation'];
}
这是动画.ts:
export const slideInAnimation = trigger('routeAnimations', [
transition(
'*<=>*',
[
style({ position: 'relative' }),
query(':enter, :leave', [
style({
position: 'inherit',
width: '100%'
})
]),
query(':enter', [style({ right: '-100%' })]),
query(':leave', animateChild(), { optional: true }),
group([
query(':leave', [animate('350ms ease-out', style({ right: '100%' }))], { optional: true }),
query(':enter', [animate('350ms ease-out', style({ right: '0%' }))])
]),
query(':enter', animateChild())
]
)
]);
【问题讨论】:
标签: angular typescript animation angular7