angular - 登录弹出窗口后角度动画被阻止
问题描述
我创建了一个在社交登录失败后触发的动画。它在 chrome 中工作,但在 safari 中没有。在 safari 中也有动画作品。我不知道,为什么。
看下面的视频,我的意思是: https ://drive.google.com/file/d/1VdaNDjPnh4F2wULHy3CQZ5nvqZcQU33m/view?usp=sharing
- 我重新加载页面
- 点击facebook登录按钮
- 显示登录弹出窗口,然后它没有发生任何事情
- 再次单击 facebook 登录按钮和动画作品
在 chrome 中,动画也是第一次工作。所以这个错误只是野生动物园。
这是我的动画定义:
animations: [
trigger('showConditions', [
state('show', style({ left: '0' })),
state('hide', style({ left: '100%' })),
transition('show <=> hide', [
animate('0.5s cubic-bezier(0.35, 0, 0.25, 1)')
]),
]),
trigger('showSignin', [
state('show', style({ left: '0' })),
state('hide', style({ left: '-100%' })),
transition('show <=> hide', [
animate('0.5s cubic-bezier(0.35, 0, 0.25, 1)')
]),
])
],
并且当 showConditions 参数更改时触发动画:
ngOnInit() {
this.authSubscription = this.store.select('auth').subscribe((state: any) => {
if (!!state.error) {
this.error = state.error;
}
if (state.login.showConditions) {
this.showConditions = state.login.showConditions;
this.accessToken = state.provider.accessToken;
this.provider = state.provider.type;
}
console.log(this.showConditions);
});
}
我使用以下动画:
<div class="carousel-item active" [@showSignin]="!showConditions ? 'show' : 'hide'">...</div>
谢谢你的帮助!塔马斯
解决方案
我找到了解决这个问题的方法。需要使用 ngZone。因此,我在成功登录 fb 的情况下调用调度函数。如果我将此函数放入 ngZone.run() 函数中,则它可以正常工作。我的解决方案如下所示:
this.ngZone.run(() => {
this.store.dispatch(AuthActions.signInWithProviderStart({ accessToken, provider: 'facebook' }));
});
我之前为 NgZone 创建了一个实例。
有关 NgZone 的更多信息:https ://angular.io/api/core/NgZone
推荐阅读
- python - 使用python从所有用户的mongodb数据库中获取所有电子邮件的功能
- php - 字符串多次转换为数组
- google-sheets - ARRAYFORMULA - 不适用于连接
- css - Woocommerce:如何制作 woocommerce_form_field 内联块
- c# - 如何在 xamarin 中绑定 DataGrid?
- git - 我的 git repo 怎么能有一个没有主 ref 的主?
- java - 是否有停止使用 altbeacon 查找重复信标的功能?
- javascript - 如何将动态 id 从 ajax 数据传递到 Modal
- javascript - 有没有办法引用在变量中声明的函数?
- swift - 在 iOS 应用程序中查找文件