Angular 如何从localeStorage数组中删除特定对象

Angular 如何从localeStorage数组中删除特定对象,angular,typescript,Angular,Typescript,我正在从localeStorage保存并获取表单值。当我显示其中的数据时,我想删除我单击的特定对象。我的代码确实有效,但它会删除其中的所有数据。 以下是我的保单价值: "beneficiaryInfo":[ { "name":"test", "surname":"test2", "personalNumber"

我正在从localeStorage保存并获取表单值。当我显示其中的数据时,我想删除我单击的特定对象。我的代码确实有效,但它会删除其中的所有数据。 以下是我的保单价值:

  "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查看我的更新答案再次感谢!!