我正在处理的应用程序需要能够在路线中来回导航,所以当您沿一个方向浏览应用程序时,组件从左向右进行动画制作,当您向后导航时,从右向左导航。路线动画角度4
即
component1 -> component2 = left -> right animation
component2 -> component1 = right -> left animation
我可以在NG4实现这一点很容易不够好,但问题是,它没有导航都退出和进入的部件。退出的组件正好消失,输入的组件动画。
我也可以在NG2中实现这一点 - 但是当你有条件动画时会出现复杂情况。即。
component2 -> component3 = left -> right animation
component2 -> component1 = right -> left animation
这里的问题是根据下一个或上一个路线触发不同的动画。
有没有人有NG2或4的解决方案来解决在两个方向同时动画两个视图的问题?
我没有把它放在plunkr中,因为我不知道如何设置NG4应用程序。道歉。
我NG4解决方案是基于this demo apphttps://github.com/matsko/ng4-animations-preview
但基本上我app.component.ts我有以下的动画:
animations: [
trigger('routerAnimations',[
transition('page1 => page2',[
style({transform: 'translateX(100%)'}),
animate('500ms')
]),
transition('page2 => page1', [
style({transform: 'translateX(-100%)'}),
animate('500ms')
]),
transition('page2 => page3',[
style({transform: 'translateX(100%)'}),
animate('500ms')
]),
transition('page3 => page2',[
style({transform: 'translateX(-100%)'}),
animate('500ms')
]),
transition('page3 => page4',[
style({transform: 'translateX(100%)'}),
animate('500ms')
]),
transition('page4 => page3',[
style({transform: 'translateX(-100%)'}),
animate('500ms')
])
])
]
,并从每个路由抓住动画值的函数和结合其对<router-outlet> in app.component.html
出口变量(?):上述
export class AppComponent {
prepareRouteTransition(outlet) {
let routeData: any;
try {
routeData = outlet['_activatedRoute'].snapshot.routeConfig['animation'];
} catch(e) {
return '';
}
return routeData.value;
}
}
功能抓起动画值这是在动画用来定义过渡的开始和结束值:
export const APP_ROUTES = [{
path: '',
component: Page1Component,
animation: {
value: 'page1',
}
},
{
path: 'page2',
component: Page2Component,
animation: {
value: 'page2',
}
},
{
path: 'page3',
component: Page3Component,
animation: {
value: 'page3'
}
},
{
path: 'page4',
component: Page4Component,
animation: {
value: 'page4'
}
}
];
app.component.html:
<div class="page" [@routerAnimations]="prepareRouteTransition(outlet)">
<router-outlet #outlet="outlet"></router-outlet>
</div>
同样的问题在这里,我赶到同一个路障。你知道了吗? – elecash
谢谢@Clay我已经测试过,效果非常好:)但是我要等到4.1.0,因为实现更简洁,但这应该是现在被接受的答案 – elecash