【发布时间】:2019-01-04 05:30:05
【问题描述】:
所以我有一个待办事项列表,每个都有一个波纹,当您单击待办事项时,我想将页面路由到一个新的 URL,但我希望波纹动画在此之前完成。
在 Angular 4+ 中,我找不到轻松做到这一点的方法,到目前为止我想出的唯一解决方案是以下一个,在 Angular 中是否有“正确”的方法来做到这一点?
组件:
export class TodoListComponent {
public todos = this.todoService.todos$;
@ViewChildren(MatRipple) private ripples: QueryList<MatRipple>;
constructor(private todoService: TodoService, private router: Router) {}
public onGoTo(event: MouseEvent, index: number, todo: Todo): void {
const enterDuration = 300;
const exitDuration = 50;
const rippleRef = this.ripples
.toArray()
[index].launch(event.clientX, event.clientY, {
animation: {
enterDuration,
exitDuration,
},
});
setTimeout(() => rippleRef.fadeOut, enterDuration);
const animationDuration = enterDuration + exitDuration;
setTimeout(() => this.router.navigate([todo.id]), animationDuration);
}
}
模板:
<mat-list>
<mat-list-item
*ngFor="let todo of (todos | async); let index = index"
mat-ripple
[matRippleDisabled]="true"
>
<div class="Todo">
<div class="Todo__Label" (click)="onGoTo($event, index, todo)">
{{ todo.title }}
</div>
</div>
</mat-list-item>
</mat-list>
【问题讨论】:
标签: angular angular-material angular-animations