2016-11-24 56 views
1

我有一個用於我的angularfire2身份驗證調用auth.service的服務。在那裏,我想用它來檢查用戶是否登錄,並獲取登錄的用戶對象,以便我可以將它傳遞給組件並在模板中使用。如何獲取用戶詳細信息並檢查用戶是否在angular2組件中登錄

這裏是我的auth.service.ts

import { Injectable } from '@angular/core'; 
import { AngularFire, AuthProviders, AuthMethods } from 'angularfire2'; 

@Injectable() 
export class AuthService { 
user = {}; 
isLoggedIn: boolean; 
    constructor(public af: AngularFire) { 
    this.af.auth.subscribe(user => { 
     if(user) { 
     // user logged in 
     this.user = user; 
     this.isLoggedIn = true; 
     console.log(this.user); 

     } 
     else { 
     // user not logged in 
     this.user = {}; 
     this.isLoggedIn = false; 
     } 
    }); 

    } 

這一切正常。但我似乎無法獲得組件中isLoggedIn鍵的值。

我試圖調用它的組件作爲這樣

import { AuthService } from '../auth/auth.service'; 
    isLoggedIn: boolean; 
    constructor(private AuthService : AuthService) { 

      this.isLoggedIn = this.AuthService.isLoggedIn; 
    } 

我的猜測是不是在做正確的方式。 如何從auth.service中獲取此isLoggedIn值?同樣,獲取用戶對象的更好方法也是如此。

+0

您的服務和組件在同一個模塊中嗎?如果您無法讀取「AuthServce.isLoggedIn」,則可能是因爲Angular DI的層次性。 – Obaid

+0

是的,一切都是我想的一個模塊。我正在使用Angular-CLi –

回答

0

您的方法存在的問題是,您在另一個組件中調用 this.isLoggedIn = this.AuthService.isLoggedIn在構造函數中。對此的快速解決方案是在您的auth.service中公開isLoggedIn並從另一個組件訪問它。一個例子是<div *ngIf="AuthService.isLoggedIn"> ...

相關問題