在Angular4中google登录后未调用ngOnInit()函数

时间:2018-02-20 02:17:43

标签: angular angular2-template angular2-forms angular2-services angular2-directives

我正在制作一个网络应用程序&用户可以通过他/她的凭据登录或通过Facebook& Gmail中。当用户通过Facebook或Gmail登录时出现问题,如登录后我将用户重定向到主页& ngOninit()函数未被调用,因此我无法在初始页面加载时调用任何API。它通过凭据登录时有效。可能的原因是什么?请帮忙。

install and restart

2 个答案:

答案 0 :(得分:0)

我认为 NgZone 会解决问题。

import { Component, OnInit, EventEmitter, Output } from '@angular/core'; 
import {GlobalService} from '../services/global.service';
import { NgZone } from '@angular/core';

export class HomeComponent implements OnInit {
constructor(private loginservice: LoginService, private globalService: 
GlobalService,private zone:NgZone) {} 

ngOnInit() {

if (this.globalService.user_token) {
this.zone.run(() =>
this.loginservice.userDetails(this.globalService.user_token)
 .subscribe((response: any) => { 
 console.log(response);
}
);
}
}

答案 1 :(得分:0)

谢谢Sunil,这对我有用。正如Mohit所说,Cognito User Pool登录工作正常,但是当路由器加载仪表板时,gauth导致ngInit()生命周期事件没有被触发。

Mohit - 这里有解决方案相关信息:https://github.com/angular/angular/issues/18254。请参阅ActivatedRoute最近的成功。

angular5 core / router 5.2.0,aws-amplify,gapi latest