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

时间:2016-08-16 16:29:38

标签: angularjs angular typescript rxjs ngrx

登录后我得到用户

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

2 个答案:

答案 0 :(得分:1)

如果要存储已记录的用户详细信息,可以通过几种方式执行此操作。

Redux商店(ngrx):

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

<强>优点:

  • 您可以在每个组件的所有应用程序中订阅您的用户存储,这样您就可以对每个更改做出正确的反应,
  • 商店中的用户模型将不可变 - 要更改任何内容,您必须调度一个动作,调用纯缩减器功能,因此无法意外修改任何用户数据。

<强>服务

此外,您可以将用户模型对象存储为私有变量

<强>缺点:

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

答案 1 :(得分:0)

可以使用

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