Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让angular project和localStorage在每个浏览器中都工作?_Angular_Typescript_Browser_Local Storage_Angular9 - Fatal编程技术网

如何让angular project和localStorage在每个浏览器中都工作?

如何让angular project和localStorage在每个浏览器中都工作?,angular,typescript,browser,local-storage,angular9,Angular,Typescript,Browser,Local Storage,Angular9,我在一个有购物车列表组件的e-com网站上工作,我使用localStorage实现了它,如下所示 export class CheckOutHomePageComponent implements OnInit { currentArr:string; myCart:string[] = []; prices:any; constructor( private dataTransmit: DataTransmitService, private itemsService: ItemsServ

我在一个有购物车列表组件的e-com网站上工作,我使用localStorage实现了它,如下所示

 export class CheckOutHomePageComponent implements OnInit {

currentArr:string;
myCart:string[] = [];
prices:any;
constructor(
private dataTransmit: DataTransmitService,
private itemsService: ItemsService,
) { }

ngOnInit(): void {
this.dataTransmit.currentItemId.subscribe(itemID => {
  this.myCart = [];
  this.myCart = this.addToCart(itemID);
  for(let i of this.myCart){
    console.log("myCart : "+i);
  }
});
}

addToCart(itemID){
let isAdded = false;
let itemIdStr: string;
let currentArrA:string[] = [];
this.currentArr = localStorage.getItem('currentArray');
itemIdStr = itemID.toString();
currentArrA = this.currentArr.split(",");
for(let i of currentArrA){
  if(i===itemIdStr){
    isAdded = true
  }
}
if(!isAdded){
  localStorage.setItem("currentArray", this.currentArr+","+itemIdStr);
}
this.currentArr = localStorage.getItem('currentArray');
// console.log(this.currentArr);
currentArrA = this.currentArr.split(",");
return currentArrA;
}

clearList(){
localStorage.setItem("currentArray","");
console.log("cleared..."+localStorage.getItem('currentArray'));
this.myCart = [];
}
}

这在我的chrome浏览器上运行良好,控制台显示myCart阵列的日志,我将其发送给我的朋友,但在两种浏览器中都不起作用,我在firefox上尝试过,但对我也不起作用,我猜localStorage功能需要浏览器的某种授权?如何解决此问题?

localStorage只能处理字符串键/值对

localStorage.setItem('currentArray', JSON.stringify(this.currentArr));
// and:
const o = localStorage.getItem('currentArray');
if (o) {
   this.currentArr = JSON.parse(o);
}
不需要额外的身份验证

请参阅:


并且:

本地存储只能处理字符串键/值对

localStorage.setItem('currentArray', JSON.stringify(this.currentArr));
// and:
const o = localStorage.getItem('currentArray');
if (o) {
   this.currentArr = JSON.parse(o);
}
不需要额外的身份验证

请参阅:


而且:

我已经在传递字符串键/值对了,我已经把整个myCart作为一个用逗号分隔的列表来传递,然后用逗号将其拆分以添加到一个新数组中。当我在我的pc上通过chrome打开本地主机,然后在chrome 81上打开我的朋友时,这段代码工作正常。chrome 81被列为compatiblekinda。我已经在传递字符串键/值对了。我正在传递整个myCart,作为一个列表,用逗号分隔,然后用逗号拆分,将其添加到一个新数组中。当我在我的pc上通过chrome打开本地主机,并在chrome 81上打开我的朋友时,这段代码运行良好,chrome 81被列为兼容