2017-06-19 3 views
0

以下のコードはログイン機能用です。そしてこの反応で私は特定のユーザーの全データを得ました。私は現在のユーザーの全データを保存し、それを編集プロファイルのために他のページに使用したい。 TypeScriptのビットを見て私はストアレスポンスを出して、それをグローバルに使用したい

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

、私はこれは(ないAngularJS、わからないが)角度であると信じています。

Angularでは、サービスを作成してモジュールレベルのプロバイダに提供することで、これを実現できます。

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

このサービスを作成し、login機能があり、対応するcomponent/service/directiveで依存性がある注入:としてあなたapp.module.tsで

は、サービスを登録します。あなたがサービスでsetUserData機能を実装する必要があります

もちろん
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; 
     } 

:その後、一度データを受信すると、次のようなサービスにそれを保存することができます。同様に:

@Injectable() 
export class MyGlobalService{ 

private userData :any; 

    setUserData(data){ 
    this.userData = data; 
    } 

    getUserData(){ 
    return this.userData 
    } 
} 

あなたは上記のような設定をしたら、あなたのアプリケーションでどこでもMyGlobalServiceを注入することができるはずと同様にサービスのインスタンスを使用してデータを取得する必要があります:

はそれが役に立てば幸い

let userDataStored = this.myGlobalServcie.getUserData(); 

関連する問題