【问题标题】:How save global visible user in angular 2 application?如何在 Angular 2 应用程序中保存全局可见用户?
【发布时间】:2026-02-14 01:15:01
【问题描述】:

登录后我得到用户

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

【问题讨论】:

  • 我不确定你在这里问什么。如果你想将它存储在内存中,你可以使用this.userService.user = res.json()。如果你想持久化它(即刷新页面后找到它),你可以将它存储在 cookie 或 LocalStorage 中。

标签: angularjs angular typescript rxjs ngrx


【解决方案1】:

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

Redux 存储 (ngrx):

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

优点:

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

服务:

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

缺点:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      最近更新 更多