尝试为Angular 2应用程序创建登录服务(AuthService
),并且我一直在遇到我不期望的事情。我想要完成的是拥有一个用户对象,在登录后,在应用程序的各个地方使用。如果用户注销并重新登录,则用户应通过在ngOnInit
功能中获取其他组件来更改其他组件。
class Service {
private user: User;
constructor(private http: Http) {
}
login(user, pass) {
//login stuff, set this.user;
}
getUser() {
return this.user
}
}
我在bootstrap
中声明了一次服务const SERVICE_PROVIDERS = [
AuthService
]
@NgModule({
bootstrap: [App],
providers: [
SERVICE_PROVIDERS
]
})
然后我在几个组件中使用它。想想路线周围的警卫,显示基本用户详细信息或在某处显示登录人员的姓名等内容。用法如下:
export class Login {
user: User;
constructor(private router: Router, private authService: AuthService) {
}
ngOnInit() {
this.user = this.auth.getUser();
}
}
这样,AuthService
在每个组件中实例化一次。这样,用户在注销并返回时也不会更改。所以,我知道我的Login
组件上的服务对象中的用户变量已经更改,但是当我在那里导航时,ngOnInit
仍然提取旧的用户对象。我的路线周围的警卫也使用旧用户。
修改
看起来每个组件都有自己的服务实例,这意味着它们都有自己的user
实例。每次我想要登录用户时,我都不想回到我的数据库。
答案 0 :(得分:1)
你可以在下面试试,
(\\d+)
希望这会有所帮助!!