【发布时间】:2019-08-15 05:51:17
【问题描述】:
为什么我的 Angular 序列方法不起作用(请参阅 entry-animation.ts 代码)?控制台没有抛出任何错误,VS Code 正在编译打字稿没有任何问题。
我试图让h1, h2, nav a 在<p> 标签之前进行动画处理。我不能将动画延迟太久,因为当导航到页面时,我的导航链接会为 <p> 标签设置动画。非常感谢任何帮助!
Stackblitz 示例: https://stackblitz.com/edit/angular-4gthrs?file=null
entry-animations.ts
import {trigger, animate, style, transition, stagger, query, state, sequence} from '@angular/animations';
export const headingAnimation = trigger('headingAnimation', [
transition('* => void', sequence([
query('nav a', [
style({ opacity: 0 }),
animate('.25s .4s ease-in', style({ opacity: 1 }))
]),
query('p', [
style({ opacity: 0, transform: 'translateY(-10px)' }),
stagger(400, [
animate('0.35s .4s ease-in', style({ opacity: 1, transform: 'translateY(0)' }))
])
])
]))
]);
header.component.html
<header id="content-container" @headingAnimation>
<h1>Title</h1>
<h2>Subtitle</h2>
<nav>
<a routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">Home</a>
<a routerLink="about" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">About</a>
</nav>
about.component.html
<div @headingAnimation>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus lorem libero, volutpat et laoreet ut, placerat sed urna.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus lorem libero, volutpat et laoreet ut, placerat sed urna.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus lorem libero, volutpat et laoreet ut, placerat sed urna.</p>
</div>
【问题讨论】:
-
只是一种预感,因为我不再专业地使用 Angular,但是您是否尝试过将
setTimeout包裹在您的transition周围? -
@r3wt - 我没有,因为我认为必须有一个原生的“Angular/Typescript”方式来完成这个。
-
@r3wt 同样,当用户单击链接导航到另一个页面时,我需要动画没有延迟。不幸的是,setTimeout 不是一个选项。
标签: angular typescript sequence