angular - 根据上一个路由页面添加不同的动画
问题描述
我需要一个组件(品牌名称)来根据以前的角度路线进行动画处理。也就是当前一个路由是home时,组件应该从右加载,如果前一个路由是brand model,那么组件应该从左加载。我想在组件本身中添加代码来制作动画。
我可以使用该服务在组件中获取先前的路由
import { Injectable } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class RouteService {
private previousUrl: string;
private currentUrl: string;
constructor(private router: Router) {
this.currentUrl = this.router.url;
router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
this.previousUrl = this.currentUrl;
this.currentUrl = event.url;
}
});
}
public getPreviousUrl() {
return this.previousUrl;
}
}
但加载页面后无法动画。有什么办法可以做到这一点?
解决方案
一般信息:您的动画需要一些状态,可用于将您的页面向左或向右转换。有关导航方向的信息希望由路由器提供。这始终取决于您如何在内部实现浏览器。
想法1:
通过检查路由参数的数量来获取动画方向,并将它们与之前的参数进行比较(查找路径中/的数量)。
想法2:
动画实现:
state('neutral', style({transform: 'translateX(0%)'}),
state('up', style({transform: 'translateX(-100%)'}),
state('down', style({transform: 'translateX(100%)'}),
transition('neutral => up', animate('500ms')),
transition('up => neutral', animate('500ms')),
transition('neutral => down', animate('500ms')),
transition('down => neutral', animate('500ms'))
推荐阅读
- python - 如何自动化我的 if 语句以在 openpyxl 中编写两个 excel 文档?
- r - 如何下标/上标和斜体 x 轴标签?
- python - 为什么当我尝试使用默认构造函数实例化对象时,由于调用了参数化构造函数而出现错误?
- amazon-web-services - AWS S3 最终一致性:为什么存储桶列表返回一个键,但一个头请求无
- node.js - 如何使用 koa 框架托管 mp3 文件
- haskell - Haskell中作为类型变量的高级类型
- php - 删除附件页面上的页面标题
- matlab - 用于连接字符串的版本兼容方法
- python-3.x - 我想我在 jupyter notebook/python3 中进行故障排除时搞砸了我的文件目录
- python - 使用python对图像中的像素进行基于密度的异常值检测