【发布时间】:2020-10-05 18:04:14
【问题描述】:
我正在处理一个包含多个组件的项目,这些组件需要共享保存在本地存储中的数据。我设法使用 setItem 将它们保存为对象,但是当我尝试获取它们时,我在 console.log 中得到“未定义”。
保存(点击)功能:
saving() {
let dataStorage = {
departureDate: this.departureDate,
returnDate: this.returnDate,
departureAirport: this.departureAirport,
arrivalAirport: this.destinationAirport,
passengersNumber: this.numberOfPassengers
};
localStorage.setItem("flightdetails", JSON.stringify(dataStorage));
this.showStorage = JSON.parse(localStorage.getItem("flightdetails"));
}
testLocal() {
console.log(this.showStorage); //Here I get undefined
}
声明所有变量:
public numberOfPassengers: number = 1;
public departureDate: any;
public returnDate: any;
public departureAirport: string;
public destinationAirport: string;
public showStorage: any;
我也不确定如何调用另一个组件中的本地存储元素来显示。目前我有一个叫做摘要的组件:
组件.TS:
export class SummaryComponent implements OnInit {
public showStorage = "";
constructor() {
this.showStorage = localStorage.getItem("flightDetails");
}
HTML 总结:
Departure date: {{ showStorage.departureDate}}
堆栈闪电战:https://stackblitz.com/edit/flight-date-pikcer
感谢您对解决此问题的支持!
【问题讨论】:
-
localStorage并不是为了促进组件之间的数据共享。为此,请查看单例服务。在您的情况下,如果您在saving()完成之前调用testLocal()函数,则变量showStorage尚未分配任何值。在另一个组件中,您将执行相同的JSON.parse(localStorage.getItem("flightDetails"))。但是在尝试使用之前检查从本地存储中获取的数据是否为null通常是一个好习惯。这意味着数据不可用。
标签: javascript angular local-storage undefined