如何在angular 2 应用程序中保存全局可见用户?

How save global visible user in angular 2 application?

登录后得到用户

  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,也许有人知道更好的解决方案?

HTML5localSorage 可以使用,但对于 Angular2,ngrx/store 更好。它还提供状态管理,因此建议使用它。

如果您想存储已登录的用户详细信息,可以通过几种方式实现。

Redux 商店 (ngrx):

您可以使用 ngrx 存储概念 - https://github.com/ngrx/store。当您从后端获取用户模型时,您只需 dispatch 一个动作来加载数据。

优点:

  • 您可以订阅您的用户存储在应用程序的所有部分、每个组件中,这样您就可以对每个更改做出适当的反应,
  • store 中的用户模型将是 immutable - 要更改任何内容,您必须分派一个调用纯 reducer 函数的操作,因此无法修改任何用户数据一不小心。

服务:

此外,您可以将服务中的用户模型对象作为私有变量存储。

缺点:

  • 在Angular 2 中,服务可以是全局的或模块范围的。这是什么意思?如果您将您的用户服务添加到 global 模块提供程序数组中并且错误地 - 也作为您的 feature 模块提供程序,angular 2 将创建 two 您的服务实例,因此其中一个 - 将有空用户。您可以在那里找到类似的问题 - https://angular.io/docs/ts/latest/guide/ngmodule.html#!#q-why-it-is-bad