【发布时间】:2019-06-01 04:57:43
【问题描述】:
我正在尝试使用 Angular 构建一个页面,该页面具有各种进度条,这些进度条代表需要一定时间的操作的进度。我想要做的是使用 Angular Material 进度条从时间 0 到结束时间制作平滑的动画。我目前的解决方案是简单地每 50 毫秒更新一次进程的百分比,并将进度条的值设置为该值。我正在使用 rxjs 计时器完成此操作,如下所示:
const start = new Date().getTime();
const source = timer(0, 50);
const subscribe = source.subscribe(() => {
const time = new Date().getTime();
if (time - start > length) {
subscribe.unsubscribe();
}
this.progressValue = 100 * (time - start) / length;
});
这是进度条 HTML 本身:
<mat-progress-bar mode="determinant" [value]="progressValue"></mat-progress-bar>
然而,结果是进度条的进展非常不稳定。有一个更好的方法吗?我每次都知道这个过程的长度,所以我觉得在这段时间内平稳过渡应该相对容易。谢谢!
【问题讨论】:
-
您是否正确拼写了
mode属性?它应该是determinate而不是determinat。 -
哎呀,好像我做到了。但是,mat-progress-bar 无论如何都默认确定,所以不幸的是它没有帮助解决我的问题。
-
如果你不介意,我正在做类似的事情,长度代表什么
-
如果你想要一个流畅的动画,你只能每250ms更新一次进度条,因为.mat-progress-bar-fill的transition-duration是250ms
标签: angular typescript animation