1

登录后我得到用户

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

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

我如何实现这个用户服务?* 我想获得一些用户数据而不需要新的后端调用?** 我知道https://github.com/ngrx/store,也许有人知道更好的解决方案?

4

2 回答 2

2

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

Redux 商店(ngrx):

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

好处:

  • 您可以在所有应用程序、每个组件中订阅您的用户存储,这样您就可以对每次更改做出正确反应,
  • 存储中的用户模型将是不可变的 - 要更改任何内容,您必须调度一个操作,该操作调用纯 reducer 函数,因此不可能意外修改任何用户数据。

服务:

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

缺点:

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

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

于 2016-08-16T17:11:08.193 回答