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 如何使用map设置和获取使用服务的价值?_Angular - Fatal编程技术网

Angular 如何使用map设置和获取使用服务的价值?

Angular 如何使用map设置和获取使用服务的价值?,angular,Angular,我有一个共享的HTML <inventory-products-list *ngIf="toggle" [products]="products" (qrCode)="generateQRCode($event)" (undeleted)="undelete($event)" (deleted)="deleteProduct($event)"></inventory-products-list> 在我的组件中,我正在执行 changeView() { this.t

我有一个共享的HTML

 <inventory-products-list *ngIf="toggle" [products]="products" (qrCode)="generateQRCode($event)" (undeleted)="undelete($event)" (deleted)="deleteProduct($event)"></inventory-products-list>
在我的组件中,我正在执行

  changeView() {
this.toggle = !this.toggle;
this.uiService.setData("category",this.toggle);
console.log(this.uiService.getData("category"));
}

ngOnInit(): void {
console.log("on",this.uiService.getData("category"));
this.getCategories();
}
但当我们更改页面并返回时,并没有保留键值。
我做错了什么?

在服务中保留组件值的想法是好的。您可以将值存储在
映射中,而不是所有实例共享的单个值。因此,使用组件的每个视图在地图中都有自己的键和自己的数据。作为密钥,您可以使用当前路由,也可以为每次使用创建一些唯一的名称

编辑:示例 检查一下

如果无法使用Map类,则可以使用泛型对象:

var objectAsMap = {};
objectAsMap[key] = values;
var data = objectAsMap[key];

你能提供任何链接吗。。如何使用它?我添加了一个示例代码,这样您就有了项目的起点。如何从不同的组件设置componentDataMap属性?如何var objectAsMap={};objectAsMap[key]=值;var data=objectAsMap[key];此代码与您编写的服务相关?此代码只是一个示例,说明如何使用对象的键读取和写入数据。您不想更改
componentDataMap
的值,只需使用我在示例中编写的方法添加或从中获取数据即可。
class MyService {
  private componentDataMap = new Map();

  public setData(key, data) {
    this.componentDataMap.set(key, data);
  }

  public getData(key) {
    return this.componentDataMap.get(key);
  }
}
var objectAsMap = {};
objectAsMap[key] = values;
var data = objectAsMap[key];