【问题标题】:User specific variables in Angular 2Angular 2 中的用户特定变量
【发布时间】:2017-07-28 08:23:07
【问题描述】:

我是 Angular 的新手,我一直在阅读,但仍然找不到以正确方式处理用户特定变量(比如说用户名)的正确方法。也就是说,这些变量可以被任何组件访问和编辑(我试图避免全局变量,因为我认为它们不适合这种具体情况)

【问题讨论】:

  • 您可以使用服务并将其注入您想要的任何组件中。
  • 变量绑定到你的组件/模块范围

标签: angular web-services typescript


【解决方案1】:

您可以使用浏览器本地存储来存储用户特定的数据,例如 用户名/Userprofile/authtoken 等

let userProfile = {username: 'abc', ...};
localStorage.setItem('UserLocalProfile', userProfile);

你也可以删除它

localStorage.removeItem('UserLocalProfile');

您可能会为此编写服务并注入到 Angular 组件中,这样会更好地满足您的需求。

这里是开始的例子..

import { Injectable } from '@angular/core';

@Injectable()
export class TokenService {
    constructor() { }

    private storageName: string = "UserLocalStorage";

    setToken(token: string) {
        localStorage.setItem(this.storageName, token);
    }

    getToken() {
        let token = localStorage.getItem(this.storageName);
        return token;
    }

    clearToken() {
        localStorage.removeItem(this.storageName);
    }
}

【讨论】:

  • 我同意你的看法。我之前使用过一项服务,但不依赖本地存储。这是一个有效的解决方案,尽管我认为它不是完美的解决方案。但是设置令牌后,我浏览器中出现的 storageName 是“未定义”!为什么会这样?
  • 恕我直言,这是常见的解决方案,如果不查看您的代码,我无法解释您为什么未定义,只是您的代码有问题。
猜你喜欢
  • 2014-03-22
  • 1970-01-01
  • 2017-05-19
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 2017-05-03
相关资源
最近更新 更多