angular - 如何在 Angular 项目中声明全局值并在项目的生命周期中使用它
问题描述
我有一个嵌套对象,它将包含用户 ID、令牌、姓名、电子邮件、电话、公司名称等信息,直到用户注销。调用 API 时,我需要使用对象的某些值。
有没有办法在我的每个组件中全局设置和获取对象的值。目前我所做的是我有 setter 和 getter,我单独设置和获取值,但这非常耗时,因为我单独获取值,所以我必须在每个组件中再次形成 Object。目前的做法:
创建一个服务类并创建两个函数。
setEmailData(info) { this.info = info; } getEmailData() { const temp = this.info; // this.clearData(); return temp; }
我为至少 10 个值执行此操作。有没有办法可以直接创建、设置和获取对象的值?我的实际对象看起来像这样
userData = {
border: {
border: '',
visible: true
},
header: {
title: '',
visible: true
},
isLoggedIn: false,
uid: '',
uid_loader: false,
user: {
UserID: '',
company: 'dev',
emaild: '',
lastname: '',
name: '',
phone: '',
token: '',
url: ''
}
};
解决方案
只需创建一个全球服务。
ng g service userService
在您的服务中添加一个私有变量
private userdata: IUserData | undefined
添加公共获取和设置
public get Userdata(): IUserData | undefined {
return this.userdata
}
public set Userdata(value: IUserData) {
this.userdata = value
}
然后将服务添加到构造函数中的组件中。
并声明接口
export interface IUserdata {
border: {
border: string,
visible: boolean
},
header: {
title: string,
visible: boolean
},
isLoggedIn: boolean,
uid: string,
uid_loader: boolean,
user: {
UserID: string,
company: string,
emaild: string,
lastname: string,
name: string,
phone: string,
token: string,
url: string
}
}
推荐阅读
- graphql - GraphQL:Apollo 客户端缓存如何工作以保持与服务器的数据一致性?
- rust - Rust 宏:大括号和带括号的宏体有什么区别?
- python - 静态文件不会在 django login.html 中加载
- istio - 如何增加 Istio 1.6 中的默认指标?
- c# - context.Database.Migrate():无法连接,因为目标机器主动拒绝?
- python - Python将结果另存为字符串
- r - 如何在特定字符之后剪切R中的所有行/字符
- python - Python 特征工程患者数据
- data-structures - 了解 leetcode 之字折线
- c# - 使用 c# 在保存时禁用更新链接