Angular 角度:如何使类属性(变量)保持常量,以便在组件重新加载时不会丢失数据
因此,我要做的是将数据的Id保存在本地存储中,以便将其发送到另一个组件,因为当我转到另一个组件时,数据丢失,并且显示未定义。我也用rxjs试过了。我的问题是,当我的数据来自服务时,我希望将其保存在变量中,并使其在组件重新加载到ngonit时保持不变。因此,使用rxjs,我可以将这些数据发送到各个组件Angular 角度:如何使类属性(变量)保持常量,以便在组件重新加载时不会丢失数据,angular,oop,rxjs,Angular,Oop,Rxjs,因此,我要做的是将数据的Id保存在本地存储中,以便将其发送到另一个组件,因为当我转到另一个组件时,数据丢失,并且显示未定义。我也用rxjs试过了。我的问题是,当我的数据来自服务时,我希望将其保存在变量中,并使其在组件重新加载到ngonit时保持不变。因此,使用rxjs,我可以将这些数据发送到各个组件 export class AppComponent { title = 'promisefitness'; data:any; constructor(private _User
export class AppComponent {
title = 'promisefitness';
data:any;
constructor(private _UserService:UserService, private _RxJsService:RxjsService) {
ngOnInit(): void {
this._UserService.Login(UserData).subscribe(DataComingFromBackEnd=>{
this.data=DataComingFromBackEnd._Id;
})
this._RxjsService.SendData(this.data);
}
}
现在,我已经在类中声明了数据,我希望数据应该永久存储来自后端的响应,即使组件重新加载。然后我可以使用Rxjs将这些数据发送到任何地方的另一个组件
请大家帮帮我。提前感谢如果您想在需要使用的重新加载后保留数据,请记住它不会永久保留数据,并且存在某些限制,我建议您先阅读一下 话虽如此,有两个基本命令允许您使用
localStorage
,它们是:localStorage.setItem()
和localStorage.getItem()
下面是代码的一个修改版本:
导出类AppComponent实现OnInit{
标题=‘承诺适用’;
资料:有;
构造函数(private _UserService:UserService,private _RxJsService:RxJsService){}
ngOnInit():void{
this.data=this.getDataFromLocalStorage('myData');
如果(!this.data){
这是._UserService.Login(UserData).subscribe(DataComingFromBackEnd=>{
this.data=DataComingFromBackEnd.\u Id;
this.RxjsService.SendData(this.data);
this.saveDataToLocalStorage(this.data);
})
}否则{
this.RxjsService.SendData(this.data);
}
}
saveDataToLocalStorage(数据:任意):无效{
常量stringifiedData=JSON.stringify(数据)
setItem('myData',stringifiedData);
}
getDataFromLocalStorage(dataKey:string):任意{
const data=localStorage.getItem(dataKey);
const parsedData=JSON.parse(数据);
返回数据;
}
}
如果您想在需要使用的重新加载后保留数据,请记住它不会永久保留数据,并且存在某些限制,我建议您先阅读一下
话虽如此,有两个基本命令允许您使用localStorage
,它们是:localStorage.setItem()
和localStorage.getItem()
下面是代码的一个修改版本:
导出类AppComponent实现OnInit{
标题=‘承诺适用’;
资料:有;
构造函数(private _UserService:UserService,private _RxJsService:RxJsService){}
ngOnInit():void{
this.data=this.getDataFromLocalStorage('myData');
如果(!this.data){
这是._UserService.Login(UserData).subscribe(DataComingFromBackEnd=>{
this.data=DataComingFromBackEnd.\u Id;
this.RxjsService.SendData(this.data);
this.saveDataToLocalStorage(this.data);
})
}否则{
this.RxjsService.SendData(this.data);
}
}
saveDataToLocalStorage(数据:任意):无效{
常量stringifiedData=JSON.stringify(数据)
setItem('myData',stringifiedData);
}
getDataFromLocalStorage(dataKey:string):任意{
const data=localStorage.getItem(dataKey);
const parsedData=JSON.parse(数据);
返回数据;
}
}
谢谢兄弟的帮助。但是除了本地存储,没有其他方法了吗?我觉得本地存储是不安全的。唯一的另一种方法是cookies,但是cookies有更大的大小限制,它适合保存原始数据。本地存储是不安全的,因为前端没有任何东西是安全的,根据经验,大多数安全问题都应该在后端单独解决。您的用例到底是什么?我关心的是在本地storgae上保存tokken或id是否会导致安全问题。但是应该有另一种方法,当数据来自后端时,我可以将其存储在一个变量中并使其保持不变,这样ngonit()变量就不会丢失其数据和值。兄弟,我使用的是restful API,这就是为什么它的无状态没有机会将状态(或数据或字符串)保存到后端的原因将其保存在本地存储上并不是一个安全问题,请提供帮助。但是除了本地存储,没有其他方法了吗?我觉得本地存储是不安全的。唯一的另一种方法是cookies,但是cookies有更大的大小限制,它适合保存原始数据。本地存储是不安全的,因为前端没有任何东西是安全的,根据经验,大多数安全问题都应该在后端单独解决。您的用例到底是什么?我关心的是在本地storgae上保存tokken或id是否会导致安全问题。但是应该有另一种方法,当数据来自后端时,我可以将其存储在一个变量中并使其保持不变,这样ngonit()变量就不会丢失其数据和值。兄弟,我使用的是restful API,这就是为什么它的无状态不可能保存状态(或后端的数据或字符串)将其保存在本地存储上不是一个安全问题