Кнопка подписи Google исчезает после выхода из системы при реализации аутентификации Google.

Я пытаюсь реализовать аутентификацию Google в AngularJS 2.

Я перешел по этой ссылке

Я создал приложение, содержащее 4 компонента.

  1. Компонент заголовка
  2. Компонент входа
  3. Детальный компонент
  4. Компонент приложения (корень)

Компонент входа имеет код страницы входа. Поэтому я включил следующее в login.component.html ->

<div class="g-signin2" data-onsuccess="onSignIn"></div>

Кнопка «Выйти» включена в компонент «Заголовок». Код выглядит следующим образом:

header.component.html

 <div>
    <span class="log-out" (click)="signOut()"> Logout </span>
  </div>

header.component.ts

constructor (private router:Router, private ngZone: NgZone){

gapi.load('auth2', function () {
  gapi.auth2.init()
});

window['signOut'] = (user) => ngZone.run(() => this.signOut());
}

signOut() {
  var auth2 = gapi.auth2.getAuthInstance();
  auth2.signOut().then(function () {
  console.log('User signed out.');
   });
    this.router.navigate(['']);
 }

После успешного выхода из системы он вернется на страницу входа, адрес '', который был установлен в app-routing.module.

Когда я выхожу из системы, меня перенаправляют на страницу входа, но кнопка подписи Google исчезает. При обновлении снова появляется

Если я что-то упустил, пожалуйста, направьте меня!


person Rahul Sharma    schedule 22.01.2018    source источник
comment
вероятно, потому что ваш this.router.navigate(['']); находится за пределами метода signOut... переместите его в то же место, где находится ваш console.log   -  person Elmer Dantas    schedule 22.01.2018
comment
Я сделал. Все равно не появляется. Он появляется только после обновления.   -  person Rahul Sharma    schedule 23.01.2018
comment
здесь вы можете найти свое решение и понять почему не работает... кроме того, я предлагаю вам немного прочитать об асинхронных операциях из-за проблемы с кодом, о которой я упоминал. С уважением   -  person Elmer Dantas    schedule 23.01.2018


Ответы (1)


Я решил свою проблему:

Итак, я узнал, что включение this.router.navigate[''] не приводит к перезагрузке всей страницы. Он просто направляет меня к нужному div в HTML.

Я загрузил platform.js в файл index.html. Чтобы он загрузился, нам нужно вызвать функцию window.open().

Поэтому я заменил его на window.open("/","_self"). Здесь «/» — это корневая страница (в моем случае это страница входа), а «_self» означает, что она будет перенаправлять вас на ту же вкладку.

person Rahul Sharma    schedule 23.01.2018