我想在单击删除按钮时删除该项目。
我试图找到该项的数组索引并使用Splice函数。没有运气了。
我能够访问被点击的项目,但不能访问属性_title,它是todo模型中的私有变量。我打算使用标题映射数组,但_title返回为'undefined'。
我认为localStorage.removeItem不是一个有效选项,因为所有内容都存储在值中。
无论如何,我在这一点上真的很失落。我将不胜感激任何帮助!
tl; dr我如何获得项目的索引#或_title,它是模型中的私有变量?
本地存储看起来像这样:
键 - STORAGE_ITEM_NAME
价值 - [{“_完成”:false,“_ title”:“创建Todo App”},{“_ completed”:false,“_ title”:“Debug”}]
如果这有帮助,这是Injector Graph。
// TODO-item.component
onRemoveTodo() {
this.remove.emit(this.todo);
}
// TODO-list.component
removeTodo(todo: Todo) {
this.TodoStoreService.remove(todo);
}
// TODO-store.service
remove(todo: Todo) {
/*this is where I need help*/
}
// storage.service
export class StorageService {
storage = window.localStorage;
has(name: string): boolean {
return this.get(name) !== null;
}
get(name: string): any {
const item = this.storage.getItem(name);
try {
return JSON.parse(item);
} catch (err) {
return null;
}
}
set(name: string, value: any) {
this.storage.setItem(name, JSON.stringify(value));
}
remove(name: string) {
this.storage.removeItem(name);
}
}
// todo
export class Todo {
private _completed = false;
private _title: string;
constructor(title: string, completed = false) {
this._title = title;
this._completed = completed;
}
get completed(): boolean {
return this._completed;
}
get title(): string {
return this._title;
}
set title(value: string) {
this._title = value.trim();
}
toggle() {
this._completed = !this._completed;
}
}