使用 Angular 2.0 路由器的页面过渡动画
Page transition animations with Angular 2.0 router
在Angular 2中,我正在尝试通过Router onActivate 方法在新组件中进行动画处理。
我在这里设置了一个 Plunk,演示了这个问题:http://plnkr.co/FikHIEPONMYhr6COD9Ou
其中一个页面组件中的 onActivate 方法示例:
routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) {
document.getElementsByTagName("page3")[0].className='animateinfromright';
}
我遇到的问题是,我希望新组件在现有组件之上进行动画处理,但在添加新组件之前,旧组件已从 DOM 中删除。
有没有办法在新页面动画化时延迟删除上一页?
我发现了类似的问题:带有 Angular 2.0 路由器和组件接口承诺的页面过渡动画但是该技术只是在添加新组件之前延迟删除以前的组件。
最终,我将根据我们从/移动到哪个页面而具有不同的动画,因此在每个页面组件中都有onActivate 。
非常感谢任何帮助!
您可以在
<router-outlet>
所在的位置添加一个"EchoComponent",在其中创建一个<canvas>
并在routerOnDeactivate()
上drawImage()
...像这样:
@Component({
template: `<canvas #canvas *ngIf="visible"></canvas>`
})
class EchoComponent {
@ViewChild("canvas") canvas;
public visible = false;
constructor(private _shared: SharedEmitterService) {
this._shared.subscribe(el => el ? this.show(el) : this.hide(el));
}
show(el) {
this.canvas.drawImage(el);
this.visible = true;
}
hide() {
this.visible = false;
}
}
@Component({...})
class PrevRoute {
constructor(private _eref: ElementRef,
private _shared: SharedEmitterService) {}
routerOnDeactivate {
this._shared.emit(this._eref.nativeElement);
}
}
@Component({...})
class NextRoute {
constructor(private _eref: ElementRef,
private _shared: SharedEmitterService) {}
routerOnActivate {
this._shared.emit(false);
}
}
这只是一个伪代码(从内存中编写),但它应该说明这种方法需要什么。
相关文章:
- 将jQuery动画与angular的ngAnimate一起使用
- Angular JS飞行购物车动画指令
- 基于媒体查询的angular js动画无法调整窗口大小
- Angular 1.2.5嵌套动画
- Angular JS具有在状态转换期间可见的来自两个不同状态的页面(用于动画目的)
- 对 HTML 附加到 Angular 中的元素进行动画处理
- 使用 Angular 2.0 路由器的页面过渡动画
- Javascript在Angular中切换高度动画
- 是否可以在 Angular 指令中使用 jQuery 来执行动画
- angular js设置动画以滚动到视口顶部
- 使用Angular+ng animate以圆形方式设置列表的动画
- Angular js 在
标签上的变量更新$scope动画
- 无法使用Angular Highcharts设置实心规格图的动画
- ng使用angular.js制作传播动画
- Angular.js动画不起作用
- 使用Angular为表格行上的按钮制作动画,使整行's按钮设置动画
- 在动画开始时改变元素高度(Angular)
- 使用Angular 1.2和Animate.css加载动画
- Angular ng-显示/隐藏动画
- Angular 2 -直接在选择器上添加动画处理程序