变化是 isLoggedIn 成为 get 方法基于localStorage项目
isLoggedIn
get
export class LoggedinService implements OnInit { redirectUrl: string; constructor() {} get isLoggedIn(): boolean { return localStorage.getItem('login') ? true : false; } login(){ localStorage.setItem('login','true') } logout(){ localStorage.removeItem('login') } }
app.component
export class AppComponent { constructor(private loggedInService: LoggedinService, private router: Router) { } logIn(): void { this.loggedInService.login(); // set the state as login let redirect = this.loggedInService.redirectUrl ? this.loggedInService.redirectUrl : '/gallery'; this.router.navigate([redirect]); } logout(): void { this.loggedInService.logout(); //// set the state as logout this.router.navigate(['/']); } }
的 stackblitz演示 强>
我对你的代码有疑问。
在LoggedInService中 onInit 你为什么打电话 login() 和 logout() 直?
onInit
login()
logout()
this.CheckAuthentication(); this.login(); this.logout();
这样做是添加和删除你的 的 localStorage的 强> 。此外,您可以通过键入来检查本地存储中的数据 localStorage 在浏览器控制台中。我认为你应该评论或删除 onInit 方法
localStorage