2016-11-30 91 views
2

之前,我做了一類特殊的驗證,以檢查用戶是否如果不是它不應該打開它想要去的頁面登錄。問題是當我添加行我的程序不會再發送給需要去的組件。登錄驗證需要去實際登錄

Validation.ts

export class validation { 
user = {}; 

    loggedinvalidation(user) { 
    if (user) { 
     this.user = user; 
     console.log("test login"); 
     return true 
    } else { 
     this.user = {}; 
     console.log("test logout"); 
     return false 
    } 
    } 
} 

app.component.ts

export class AppComponent { 


... 

    login(email:any, password:any) { 
     this.af.auth.login({ email: email, password: password }, { 
      provider: AuthProviders.Password, 
      method: AuthMethods.Password 
     }); 
     this.modal.close(); 
     this.router.navigate(['dashboard']); 
     } 
    } 

dashboard.component.ts

export class DashboardComponent { 

constructor(public af: AngularFire, public router: Router) { 
    this.vali = new validation(); 
    this.af.auth.subscribe(user => { 
     if (this.vali.loggedinvalidation(user)) { 

     this.af.auth.subscribe(auth => { 
... 

}); 
     } 
     else { 
     this.router.navigate(['/']); 
     } 
    }); 


    } 
} 

當我運行程序&開始在/''它工作正常,但是當我嘗試登錄它給我這在我的控制檯。問題是它的第一個給我一個測試註銷,這就是爲什麼它沒有路由到儀表板。任何想法如何我可以更快或其他登錄實際上發生驗證?

test logout 
test login 

回答