Angular 如何使用map设置和获取使用服务的价值?
我有一个共享的HTMLAngular 如何使用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
<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];