en un proyecto Angular, estoy tratando de eliminar un objeto de una matriz, para hacer esto necesito filtrar la matriz y luego reemplazar esa matriz en el almacenamiento (en este caso, condensador/almacenamiento)
mi función:
deleteArticle(id: string): void { this.order = this.order[0].filter(p => p.products.productKey !== id);}
orden orden; ==>
export interface OrderProduct { productKey: string; productName: string; price: number; } export interface Order { key?: string; customerKey: string; products: OrderProduct[]; country?: string; city?: string; postcode?: string; addressLine?: string; creationDate?: any; //date }en HTML al hacer clic:
<ion-col> <ion-button (click)="deleteArticle(p.productKey)"> <ion-icon name="trash-outline"></ion-icon> </ion-button> </ion-col>Al hacer clic en el botón, puedo ver que la matriz es como esperaba, igual que la ID en la que quiero filtrar, pero sigo recibiendo este error:
No se pueden leer las propiedades de undefined (leyendo 'filtro')
Si order es del tipo Order mientras escribe e intenta this.order[0].filter... intenta acceder a una propiedad llamada '0' (como en 'cero') de this.order, que probablemente no esté definida y por lo tanto no tiene método de filtro. por lo que veo, puede eliminar el '[0]' y podría funcionar. sin más código, solo una suposición.
Encontré la solución, era una cosa del tipo de datos :)
necesario para agregar productos a este pedido...
async deleteArticle(id: string): Promise<void> { this.order.products = this.order.products.filter(p => p.productKey !== id); }