在Ionic 2中动画从一个组件过渡到另一个组件

时间:2016-08-17 15:41:16

标签: angular ionic2 angular2-directives

我的应用中有两个组件。

我需要为这些页面之间的过渡设置动画。

我需要翻页1,然后才会出现第2页。

我有任何插件可以在离子2中完成。

任何参考/示例都将受到赞赏。

我正在使用this.navController.setRootPage(Page2)从一个页面转到另一个页面。

1 个答案:

答案 0 :(得分:3)

我不知道Ionic框架,但这是一个演示(plunker)它如何与简单的Angular2一起使用:http://plnkr.co/edit/yJHjL5ap9l4MwOimCyyY?p=preview

使用Component装饰器的animations功能:

组件A

@Component({
  selector: 'home',
  directives: [ROUTER_DIRECTIVES],
  template: `
  <div class="radibre">
  Home page
  </div>
  `,
  styles: ['.radibre { width: 200px; height: 100px; background: red; color: white; }'],
   host: {
     '[@routeAnimation]': 'true',
     '[style.display]': "'block'",
     '[style.position]': "'absolute'"
   },
  animations: [
    trigger('routeAnimation', [
      state('*', style({transform: 'translateX(0)', opacity: 1})),
      transition('void => *', [
        style({transform: 'translateX(-100%)', opacity: 0}),
        animate(1000)
      ]),
      transition('* => void', animate(1000, style({transform: 'translateX(100%)', opacity: 0})))
    ])
  ]
})

export class Home {
  constructor() { }
}

组件B

@Component({
  selector: 'page',
  template: `
  <div class="page">Another page</div>`,
  styles: ['.page { width: 200px; height: 100px; background: green; color: white; }'],
   host: {
     '[@routeAnimation]': 'true',
     '[style.display]': "'block'",
     '[style.position]': "'absolute'"
   },
  animations: [
    trigger('routeAnimation', [
      state('*', style({transform: 'translateX(0)', opacity: 1})),
      transition('void => *', [
        style({transform: 'translateX(-100%)', opacity: 0}),
        animate(1000)
      ]),
      transition('* => void', animate(1000, style({transform: 'translateX(100%)', opacity: 0})))
    ])
  ]
})

export class Page {
  constructor() { }
}