【问题标题】:Google Auth Javascript API messing with Angular Material ComponentsGoogle Auth Javascript API 与 Angular Material 组件混淆
【发布时间】:2018-01-25 06:52:55
【问题描述】:

我有一个 Angularv5 项目,其中包含许多 Angular Material 组件。我已经使用gapi.auth2 成功设置了通过谷歌登录。问题在于,似乎使用gapi.auth2 inside 角度组件在很大程度上破坏了 Angular 渲染(官方)材质组件的能力。我的意思是,在成功通过gapi 进行身份验证后,单击mat-checkbox 不再选中复选框。 matInput 元素无法交互。覆盖层元素出现在屏幕的随机区域,而不是适当地拴在它们的父级上(例如mat-select 的覆盖层)。认证前没有问题。

如果我将gapi.auth2.authorize 代码移出组件并进入index.html 标头,并在页面加载后触发它运行,那么一切都会顺利运行。不幸的是,我想从我的应用程序中触发身份验证...我尝试使用NgZone 在 Angular 区域之外运行身份验证代码,但没有运气。有任何想法吗?我不知所措。我应该注意,经过身份验证后,我还从我的应用程序中调用了 Google Drive api,这似乎不会导致任何问题。据我所知,只是 gapi.auth2 引起了问题。

我正在使用的代码成功通过 Google 进行身份验证

const googleAuth = gapi.auth2.getAuthInstance();

googleAuth.then(() => {
  googleAuth.signIn().then((result) => {
    this.signinSuccess();
  });
})

【问题讨论】:

  • 控制台有错误吗?
  • @Edric 控制台出现零错误 :(

标签: angular angular-material angular-material2 google-api-js-client


【解决方案1】:

我相信我在一个项目中使用它如下:

  googleAuth.signIn().then((result) => {
    this.signinSuccess();
  });

基本上我没有googleAuth.then(() =>,因为 googleAuth 不是一个承诺。

【讨论】:

  • 我尝试了许多不同的登录排列方式,包括通过 gapi.auth2.authorize() 等不同的方法。我不认为问题与我的登录方式有关。同样,登录成功。但很高兴知道您已经成功地将 googleAuth javascript API 与 Angular 一起使用。绝对感觉就像我在设置代码的方式上做错了什么。说了这么多,大约 10 个小时后,我放弃了它,并在没有谷歌的情况下继续前进(幸运的是,这对我来说是一个选择)
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2019-10-01
  • 1970-01-01
  • 2018-02-04
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多