以下代码用于登录功能。在这个回复中我得到了特定用户的全部数据。我想存储当前用户的全部数据,并在其他页面中使用它来编辑个人资料。
login(username: string, password: string): Observable<boolean> {
var body = 'username=' + username + '&password=' + password;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
let options = new RequestOptions({ headers: headers });
return this.http.post(this.loginUrl, body, options)
.map((response: Response) => {
let success = response.json() && response.json().success;
if (success) {
this.token = success;
user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username: username, token: success }));
return true;
} else {
return false;
}
});
}
答案 0 :(得分:0)
看到一点TypeScript
,我相信这是Angular(不是AngularJS,虽然不确定)。
使用Angular,您可以通过创建服务并在模块级提供程序中提供它来实现此目的。
在app.module.ts中,将服务注册为:
@NgModule({
imports: [BrowserModule, FormsModule, HttpModule ],
declarations: [AppComponent],
bootstrap: [AppComponent],
providers: [
MyGlobalService
]
})
创建此服务,inject是您component/service/directive
函数所在的相应login
的依赖项。此后,一旦收到数据,您可以将其存储到服务中,如:
if (success) {
this.token = success;
user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username:
username, token: success }));
this.myGlobalService.setUserData(response);
return true;
}
当然,您必须在服务中实现setUserData
功能。像:
@Injectable()
export class MyGlobalService{
private userData :any;
setUserData(data){
this.userData = data;
}
getUserData(){
return this.userData
}
}
完成上述设置后,您应该可以在应用程序的任何位置注入MyGlobalService
,并且应该使用服务实例获取数据,如:
let userDataStored = this.myGlobalServcie.getUserData();
希望它有所帮助。