【发布时间】:2018-07-22 19:38:11
【问题描述】:
我有一个带有 6 个项目的编号导航菜单,它们的顺序很重要,例如,例如结帐然后登录/创建帐户然后发货然后付款设置:
您可以在任何步骤返回步骤。转发也被授权。前后跳跃几个。
我希望页面内容的动画符合这些步骤的顺序逻辑。
为此,我从这里获取了我的代码:https://plnkr.co/edit/Uo1coU9i1GsB1I4U3809?p=preview
(我复制了 routerTransition 代码,然后将第一个代码重命名为 slideLeft 反转动画并将第二个代码重命名为 slideRight)。
(这不是这个问题的一部分,而是为了让您了解它的标题:作为奖励,如果您单击导航元素更多,我将添加一个功能,为您连续导航到每个中间步骤然后 n+1 远离自身。这样做的目的是模拟每个页面确实构成单个滑块或轮播的感觉。)
我已经成功设置了路由和动画,我已经可以可视化函数的逻辑了”。
我缺少的是如何告诉应用程序是向左滑动还是向右滑动?
我不明白的是,在 routing.module.html 中,据我所知,语法不允许实现条件:
<main [@slideRight]="getState(o)">
<router-outlet #o="outlet"></router-outlet>
</main>
routing.component.ts :
import { Component, OnInit } from '@angular/core';
import { slideLeft, slideRight } from './router.animations';
@Component({
selector: 'app-routing',
templateUrl: './routing.component.html',
styleUrls: ['./routing.component.scss'],
animations: [slideLeft, slideRight],
host: { '[@slideLeft, slideRight]': '' }
})
export class RoutingComponent implements OnInit {
constructor() { }
ngOnInit() {
}
getState(outlet) {
return outlet.activatedRouteData.state;
}
}
我注意到了:
export const slideRight = trigger('slideRight', [
transition('* => *', [
:* => * 的意思是“从任何名称到任何名称”,起初我虽然可以通过每次用路由名称替换它来使用它,但我在实现中迷失了,我现在相信必须有更简单的方法。
我想做的是类似于:
<main {{isCurrentStepIncreasing ? '[@slideLeft]' : '[@slideRight]'}}="getState(o)">
<router-outlet #o="outlet"></router-outlet>
</main>
我怀疑这实际上是可能的。
【问题讨论】:
-
我认为这不是答案,但也许这篇文章很有用:medium.com/google-developer-experts/…
-
这正是我所链接的。好吧,我直接链接了他们的 plunker,但同样的区别。对不起,但这没有多大帮助:/
标签: angular animation angular-routing angular-router angular-animations