angular - Angular 将表单值推送到 LocaleStorage 中的对象而不是覆盖
问题描述
当我提交表单时,我将表单值保存在 LocaleStorage 中,但是当我再次提交表单时它会覆盖数据,我如何向其中添加另一个数据/对象?这是我的数据的本地存储“策略”值:
{
"contactInfo":{
"email":"fvreferf@gmail.com",
"phone":"568552255",
"termsConditions":true
},
"beneficiaryInfo":[
{
"name":"test",
"surname":"test2",
"personalNumber":"02027041738",
"phone":"5685522555"
}
]
}
.ts
ngOnInit(): void {
this.formAlias = 'beneficiaryInfo';
this.form = this.fb.group({
name: ['', [Validators.required, Validators.pattern('[ა-ჰ\-\s]+$')]],
surname: ['', [Validators.required, Validators.pattern('[ა-ჰ\-\s]+$')]],
personalNumber: ['', [Validators.required, Validators.pattern('[0-9]+'), Validators.minLength(11), Validators.maxLength(11)]],
phone: ['', [Validators.pattern('[0-9]+'), Validators.minLength(9), Validators.maxLength(11), Validators.required]],
});
}
onSubmit() {
if (this.form.valid) {
const formValuesArray: Array<any> = getFromLocalStorage(JSON.stringify('policy')) || [];
formValuesArray.push(this.form.value);
setToLocalStorage('policy', this.formAlias, formValuesArray);
} else {
this.submitted = true;
}
}
export const setToLocalStorage = (storageKey: string, key: string, value: any) =>
localStorage.setItem(storageKey, JSON.stringify({
...getFromLocalStorage(storageKey),
[key]: value
}));
export function getFromLocalStorage<T>(storageKey: string): T {
return JSON.parse(localStorage.getItem(storageKey));
}
解决方案
您可能需要进行setToLocalStorage
如下更改,
export const setToLocalStorage = (storageKey: string, key: string, value: any) =>
const formValues: Array<any> = getFromLocalStorage(storageKey) || [];
formValues.push(value);
localStorage.setItem(storageKey, JSON.stringify(formValues)
);
推荐阅读
- java - 在 GridView 中使用 ItemModel 类更改 card_item.xml 的背景颜色
- c# - 为对象创建映射模板并使用键值对将其反序列化
- mysql - 使用 SQL 将数据批量插入到空(但现有)记录中
- java - 如何在 apache poi 中使用 2 行的单元格引用
- arrays - 如何从角度formData在rest api中以字符串或int数据发布列表数据
- amazon-web-services - 来自 AWS lambda 的内存中查找
- apache - Apache RewriteCond 比较 TIME
- python - CircuitPython 将元组作为参数传递,错误需要 Integer
- r - XML:从 xml 查询中提取所有时间序列
- dataframe - PySpark 过滤数据框并将数据框写入 mysql 数据库