如何在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
登录后得到用户
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