使用 Google 进行身份验证后,模板未更新(但模型已更新)

Template not updated (but model is) after authentication with Google

我有一个显示用户电子邮件的简单模型,我正在使用 Google 进行身份验证。

这是我为身份验证编写的代码:

gapi.auth2.getAuthInstance().signIn().then((args) => {
  this.user = { email: args.wc.hg }
  console.log(this.user);
});

console.log 正确显示电子邮件,但模板未更新,我在浏览器上仍然看不到任何内容:{{user?.email}}

还有一点,我只是用一个简单的承诺替换了身份验证:

new Promise<string>(resolve => setTimeout(() => resolve('email'), 10000)).then(data => this.user = { email: data });

这是有效的,我的模板正在显示 email

我看不出这两个 promise 的解析有什么区别,但显然是有区别的。

你有什么想法吗?提前致谢。

那是因为它 运行 是用 angular2 framework.What 编码的,你可以做的是,你可以使用下面的代码手动检查变化检测,

import { Component, ChangeDetectorRef } from '@angular/core';    

export class MyComponent {
  constructor(private cdr:ChangeDetectorRef) {  //<----- injection
  }

  someMethod() {

    gapi.auth2.getAuthInstance().signIn().then((args) => {
       this.user = { email: args.wc.hg }
        console.log(this.user);

         this.cdr.detectChanges();              //<----Note this...
    });

  }
}