2017-06-19 51 views
0

下面的代码用于登录功能。在这个回应中,我得到了特定用户的全部数据。我想存储当前用户的全部数据,并将其用于编辑配置文件的其他页面。我要商店响应并全球使用

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

您可以将它存储到'$ rootScope'中,尽管有些人可能认为这是邪恶的。 –

+0

请简要解释@Tim Biegeleisen – Krunal

+0

https://stackoverflow.com/questions/18880737/how-do-i-use-rootscope-in​​-angular-to-store-variables –

回答

0

看到一点TypeScript,我相信这是角(不AngularJS,虽然不知道)。

使用Angular,您可以通过创建服务并在模块级别提供程序中提供服务来实现此目的。

在你app.module.ts,注册服务为:

@NgModule({ 
     imports: [BrowserModule, FormsModule, HttpModule ], 
     declarations: [AppComponent], 
     bootstrap: [AppComponent], 
     providers: [ 
      MyGlobalService 
     ] 
}) 

创建该服务并注入在相应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(); 

希望它可以帮助。