在我的應用程序中,我設置了一個auth服務。非常簡單的行爲。Angularfire2 Property'then'在類型'void'上不存在
appComponent包含一個簡單的按鈕,用於通過Google登錄事件(click)='login'
。我接受後,我想將我的用戶重定向到/account
。
該應用程序按預期方式工作BUT我遇到一個錯誤上ng serve
:
[默認] C:\項目\ SRC \應用\ app.component.ts:24:8
Property 'then' does not exist on type 'void'.
[默認] C:\項目\ SRC \應用\服務\ auth.service.ts:28:22
這些錯誤似乎是非阻塞,由於應用似乎正常工作。 你知道如何解決它們嗎?
我猜問題似乎出現,因爲我對返回_auth.login()結果這是angularfire身份驗證的登錄方法,它返回一個承諾再申請......但我不知道我該怎麼重構我的代碼以正確調用服務,如果確實是問題。我認爲(糾正我,如果我錯了)從服務本身調用重定向是個壞主意。
這是我的文件。
app.component.ts:
constructor(private router: Router, private _auth: AuthService) {
this.date = new Date();
}
login() {
this._auth.login()
.then(() => {
this.router.navigate(['/account']);
});
}
logout() {
this._auth.logout()
.then(() => {
this.router.navigate(['/login']);
});
}
我AuthService:
import { Injectable } from '@angular/core';
import { AngularFire, AuthProviders } from 'angularfire2';
@Injectable()
export class AuthService {
user = {};
isAuthenticated: boolean = false;
constructor(public af: AngularFire) {
this.af.auth.subscribe(user => {
if (user && !user.auth.isAnonymous) {
this.user = user;
this.isAuthenticated = true;
console.log('User Logged in', user, this.getUserEmail());
} else {
this.user = {};
this.isAuthenticated = false;
console.log('User Not Authenticated', user);
}
});
}
getUser() {
return this.user;
}
getUserEmail() {
return this.user.auth.email;
}
login() {
return this.af.auth.login({
provider: AuthProviders.Google
});
}
logout() {
return this.af.auth.logout();
}
}
你有使用AF正確的authservice的任何例子嗎?
謝謝!非常小的錯誤,這麼多時間!我應該仔細看看我的IDE ... – BlackHoleGalaxy