Angular 如何从localeStorage数组中删除特定对象
我正在从localeStorage保存并获取表单值。当我显示其中的数据时,我想删除我单击的特定对象。我的代码确实有效,但它会删除其中的所有数据。 以下是我的保单价值:Angular 如何从localeStorage数组中删除特定对象,angular,typescript,Angular,Typescript,我正在从localeStorage保存并获取表单值。当我显示其中的数据时,我想删除我单击的特定对象。我的代码确实有效,但它会删除其中的所有数据。 以下是我的保单价值: "beneficiaryInfo":[ { "name":"test", "surname":"test2", "personalNumber"
"beneficiaryInfo":[
{
"name":"test",
"surname":"test2",
"personalNumber":"02027041738",
"phone":"5685522555"
},
{
"name":"test3",
"surname":"test5",
"personalNumber":"02027041738",
"phone":"5685522555"
}
]
.html
<div *ngFor="let u of user.beneficiaryInfo">
<span>
{{u.name}} {{u.surname}}
</span>
<div class="del" (click)="del()">
</div>
</div>
{{u.name}{{u.Lastname}}
.ts
get user(): any {
return JSON.parse(localStorage.getItem('policy'));
}
del() {
updateLocalStorage('policy', removeValueFromObject<Policy>(getFromLocalStorage<Policy>('policy'), 'beneficiaryInfo'));
}
export const updateLocalStorage = (storageKey: string, object: object) =>
localStorage.setItem(storageKey, JSON.stringify(object));
export function getFromLocalStorage<T>(storageKey: string): T {
return JSON.parse(localStorage.getItem(storageKey));
}
export function removeValueFromObject<T>(object: T, key: string): T {
delete object[key];
return object;
}
get user():任意{
返回JSON.parse(localStorage.getItem('policy');
}
del(){
updateLocalStorage('policy',removeValueFromObject(getFromLocalStorage('policy'),'受益人信息');
}
助手。ts
get user(): any {
return JSON.parse(localStorage.getItem('policy'));
}
del() {
updateLocalStorage('policy', removeValueFromObject<Policy>(getFromLocalStorage<Policy>('policy'), 'beneficiaryInfo'));
}
export const updateLocalStorage = (storageKey: string, object: object) =>
localStorage.setItem(storageKey, JSON.stringify(object));
export function getFromLocalStorage<T>(storageKey: string): T {
return JSON.parse(localStorage.getItem(storageKey));
}
export function removeValueFromObject<T>(object: T, key: string): T {
delete object[key];
return object;
}
export const updateLocalStorage=(storageKey:string,object:object)=>
setItem(storageKey,JSON.stringify(object));
导出函数getFromLocalStorage(storageKey:string):T{
返回JSON.parse(localStorage.getItem(storageKey));
}
导出函数removeValueFromObject(对象:T,键:字符串):T{
删除对象[键];
返回对象;
}
删除受益人信息
数组中的全部数据,因为您的del
函数正是这样做的。如果只想从数组中删除特定对象,则需要使用索引或id(如果有)
在模板中声明索引并将其作为参数传递给delete方法,以便从列表中删除该索引处的对象
{{u.name}{{u.Lastname}}
现在在控制器中,您可以这样使用它:
del(索引:编号){
const data=JSON.parse(localStorage.getItem('policy')作为字符串);
常数newData={
…数据,
受益人信息:数据。受益人信息。过滤器(((任意,i:number)=>i!==index)
};
setItem('policy',JSON.stringify(newData));
}
更新
如果列表为空,则要删除受益人信息
,您需要执行检查并通过使用destructuring删除属性(尽管我认为最好将其保留为空列表):
del(索引:编号){
const data=JSON.parse(localStorage.getItem('policy')作为字符串);
const-benginiaryinfo=data.benginiaryinfo.filter(((任意,i:number)=>i!==index);
let newData:MyDataType;
如果(受益人信息长度>0){
newData={…数据,受益人信息};
}否则{
常量{受益人信息,…部分数据}=数据;
新数据=部分数据;
}
setItem('policy',JSON.stringify(newData));
}
非常感谢您!!!嗨,当我删除所有数据时,“受益人信息”仍然保存为空数组,当我从我的localestorage中删除所有对象时,我如何也删除它?@user487322225查看我的更新答案再次感谢!!