1

ログイン後、ユーザーを取得します

  private login() {
    let data = { "UserName": "admin" , "Password": "+" };

    this.apiService.doLogin(data).subscribe(
      (res) => this.userService.set('user', res),
      (err) => console.log(err)
    )
  }

このuserServiceを実装するにはどうすればよいですか? * バックエンドへの新しい呼び出しなしでユーザー データを取得したいですか? ** https://github.com/ngrx/storeについては知っていますが、誰かがより良い解決策を知っているのではないでしょうか?

4

2 に答える 2

2

ログに記録されたユーザーの詳細を保存する場合は、いくつかの方法でこれを行うことができます。

Redux ストア (ngrx):

ngrx ストアのコンセプト - https://github.com/ngrx/storeを使用できます。バックエンドからユーザー モデルを取得したら、アクションをディスパッチしてデータをロードするだけです。

利点:

  • 各コンポーネントのアプリケーションのすべての部分でユーザー ストアをサブスクライブできるため、すべての変更に適切に対応できます。
  • ストア内のユーザー モデルは不変です。何かを変更するには、純粋なレデューサー関数を呼び出すアクションをディスパッチする必要があるため、誤ってユーザー データを変更することはできません。

サービス:

また、ユーザー モデル オブジェクトをプライベート変数としてサービスに保存することもできます。

短所:

  • Angular 2 では、サービスはグローバルまたはモジュール スコープにすることができました。どういう意味ですか?ユーザー サービスをグローバルモジュール プロバイダー配列に追加し、誤って機能モジュール プロバイダーとして追加した場合、angular 2 はサービスの2 つのインスタンスを作成するため、そのうちの 1 つには空のユーザーが含まれます。そこにある同様の問題 - https://angular.io/docs/ts/latest/guide/ngmodule.html#!#q-why-it-is-bad
于 2016-08-16T23:12:27.103 に答える