【问题标题】:Run multiple query animations in parallel并行运行多个查询动画
【发布时间】:2018-01-17 19:35:01
【问题描述】:

我有两个路由组件和它们的容器,我设置了一个动画触发器 @slide,我在其中查询每个组件并相应地制作动画。

<div [@slide]="o.activatedRouteData.name">
  <router-outlet #o="outlet"></router-outlet>
<div>

RouterModule.forRoot([
  { path: '',      component: HomeComponent,  data: { name: 'home' } },
  { path: 'login', component: LoginComponent, data: { name: 'login' } } ])

trigger('slide', [
  transition('login => home', [
    query('home', style({ left: '-120%', right: '120%' })),
    query('login', style({ left: '0', right: '0' })),

    query('home', animate(duration, style({ left: '0', right: '0' }))),
    query('login', animate(duration, style({ left: '120%', right: '-120%' })))
])

这可行,除了第二个动画在触发之前等待第一个动画完成,而我正在寻找一种让它们并行触发的方法。想法?

【问题讨论】:

    标签: angular typescript angular-animations


    【解决方案1】:

    将查询包装在group()

    trigger('slide', [
      transition('login => home', [
        query('home', style({ left: '-120%', right: '120%' })),
        query('login', style({ left: '0', right: '0' })),
    
        group([ query('home', animate(duration, style({ left: '0', right: '0' }))),
                query('login', animate(duration, style({ left: '120%', right: '-120%' }))) ])
    ])
    

    感谢 GitHub 上的Ploppy3

    【讨论】:

      【解决方案2】:

      Ploppy3 在这里回答你:https://github.com/angular/angular/issues/9845#issuecomment-321240191 如何在初始化时为路由器制作单独的动画。 默认情况下禁用子动画,因此您只会看到路由器动画(要启用它,您可以检查https://angular.io/api/animations/animateChild)。 所以要做你想做的事,我只需要为组件添加你需要的动画。 所以你需要像 Ploppy3 写的那样添加 routerAnimation 并为组件使用幻灯片。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多