Ich arbeite an einem persönlichen Angular-Projekt.Methode in Angular 2 ist entweder nicht definiert oder nicht aufrufbar
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { LoginService } from './login.service';
@Injectable()
export class LoggedInGuard implements CanActivate {
constructor(
private _router: Router,
private _loginService: LoginService
) {
}
isLoggedIn() {
let token = localStorage.getItem('token');
if (token) {
this._loginService.isLoggedIn(token)
.subscribe(v => {
return v.status == 'ok';
});
} else {
return false;
}
};
canActivate() {
console.log(this.isLoggedIn());
if (this.isLoggedIn()) {
return true;
} else {
this._router.navigate(['/login']);
return false;
};
}
}
aber mein Problem ist: Noch von AngularJS zu Angular :)
meinen Code Dies ist zu lernen und zu bewegen versucht
- Wenn ich
this.
halten auf demconsole.log(this.isLoggedIn());
dann "undefined" wird ausgedruckt. - Wenn ich es entfernen, dann habe ich die folgende Meldung auf VS-Code
[ts] Cannot find name 'isLoggedIn'. Did you mean the instance member 'this.isLoggedIn'?
und das gleiche auf der KonsoleUncaught (in promise): ReferenceError: isLoggedIn is not defined
- Das Verfahren
isLoggedIn()
ohne Probleme aus anderen Dateien verwendet wird, wo ich es nennen.
Sind Sie eingeloggt, wenn undefined gedruckt wird? Können Sie versuchen, den Code auszuführen, wenn Sie ausgeloggt sind? Ich denke, Sie rufen alles korrekt auf, aber die 'isLoggedIn' Methode gibt keinen Wert in allen Fällen zurück. –