【发布时间】:2018-08-28 11:18:22
【问题描述】:
我有一个应用程序每 2 秒执行一次 HTTP 请求并更新视图。问题是,我必须做一些用户触发的 CSS 动画,这些动画大约需要一秒钟,而且经常会因为 Angular 在动画运行时更新 DOM 而损坏。
我正在使用 Akita 存储并像这样检索 observables:
this.dosingVessels$ = this.dosingVesselsQuery.selectAll().pipe(*needs rxjs operator magic*);
然后像这样在组件中显示它们:
<app-solving-vessel *ngFor="let vessel of solvingVessels$ | async"
[vessel]="vessel"
[ngClass]="{'animation-class': hoverId === vessel.id}">
</app-solving-vessel>
如何在动画进行时实现这一点:
animate(event, vessel) {
this.updateView.next(false); // prevent from updating
this.hoverId = vessel.id; // triggers animation
timer(1000).subscribe(tick => this.updateView.next(true)); // allow normal updating
}
视图没有更新。
我发现了 delayWhen 运算符,但所有示例都带有计时器,我不确定它是否是正确的方法。
【问题讨论】:
标签: angular rxjs angular6 akita angular-akita