Eliminar elemento
El usuario debería ser capaz de eliminar cualquier elemento, así esté activo o completo. Eliminar un elemento puede ser hecho dand click en un botón llamado "eliminar". En este tutorial, vamos a aprender como añadir esta funcionalidad a nuestro proyecto.
Archivo: item.component.ts
Primero, necesitamos añadir el botón al elemento, entonces vamos a trabajar en el archivo item.component.ts
- Añade un evento (click) el botón
removeen la plantilla:<button (click)="removeItem()"> remove </button> Agrega un nuevo
Outputa la claseItemComponent, el cual se emitirá alist-managercuando el usuario presione el botónremoveen un evento específico:@Output() remove:EventEmitter<any> = new EventEmitter();Asegúrate de importar
EventEmitteryOutputen tu clase:import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';- Agrega una función a la clase
ItemComponentla cual emitirá e evento. Esta función será llamada cuando el usuario de click en el botónremove:removeItem() { this.remove.emit(this.todoItem); }
Archivo: list-manager.component.ts
Ahora que cada elemento puede emitir su propia eliminación, vamos a asegurarnos de que list manager en realidad elimine el mismo elemento de la lista. Para eso, vamos a trabajar en el archivo list-manager.component.ts.
- Necesitamos responder al evento remove, vamos a añadir en la plantilla, dentro de la etiqueta
<todo-item>:(remove)="removeItem($event)" - Vamos a necesitar una función llamada
removeItem()en la claseListManagerComponent:removeItem(item) { this.todoList = this.todoListService.removeItem(item); }
Archivo: todo-list.service.ts
Eliminar el elemento es manejado en el servicio, abre todo-list.service.ts y añade una función llamada removeItem() a la clase TodoListService:
removeItem(item) {
return this.storage.destroy(item);
}
Esta función llama al método destroy() que ya creamos en todo-list-storage.service.ts anteriormente.