您可以构建一个能够留住用户的服务。我举了一个例子:
https://github.com/DeborahK/Angular-Routing
import { Injectable } from '@angular/core';
import { IUser } from './user';
import { MessageService } from '../messages/message.service';
@Injectable()
export class AuthService {
currentUser: IUser;
redirectUrl: string;
constructor(private messageService: MessageService) { }
isLoggedIn(): boolean {
return !!this.currentUser;
}
login(userName: string, password: string): void {
if (!userName || !password) {
this.messageService.addMessage('Please enter your userName and password');
return;
}
if (userName === 'admin') {
this.currentUser = {
id: 1,
userName: userName,
isAdmin: true
};
this.messageService.addMessage('Admin login');
return;
}
this.currentUser = {
id: 2,
userName: userName,
isAdmin: false
};
this.messageService.addMessage(`User: ${this.currentUser.userName} logged in`);
}
logout(): void {
this.currentUser = null;
}
}
注意:这是一个示例应用程序,因此用户信息是硬编码的。您需要检索实际数据。
更新:当访问
currentUser
从组件中,确保使用getter。这将确保在更改当前值时始终获得该值。我在MenuComponent中访问当前用户名,因此代码如下所示:
get userName(): string {
return this.authService.currentUser.userName;
}
get user(): IUser {
return this.authService.currentUser;
}