Tengo una variedad de dispositivos que se ven así.
export interface Device { id: Number; tracker_status?: Trackerstatus; } export interface Trackerstatus { last_update?: Date; battery_low?: any; }aplicando un filtro como
function filterDevices(device: any) { if (device.id == 5){ return true; }else{ return false; } }funciona perfectamente bien.
sin embargo, lo que estoy tratando de hacer es
function filterDevices(device: any) { if (device.tracker_status.battery_low == "true"){ return true; }else{ return false; } }esto solo devuelve una lista vacía sin mensajes de error. ¿Qué estoy haciendo mal?
el objetivo es mostrar los datos filtrados en una tabla angular. estoy usando el filtro así
devices: Device[] = data.filter(filterDevices);Está comprobando la cadena "true" . ¿Comprobó si la propiedad device.tracker_status.battery_low es un booleano o una cadena?
Tenga en cuenta que tanto true == "true" como false == "true" devolverían false .
console.log(true == "true"); console.log(false == "true");Yo sugeriría lo siguiente
function filterDevices(device: any) { return !!(device?.tracker_status?.battery_low); }encontró la solución. olvidé revisar los registros de la consola
simplemente verificando si el estado del rastreador no es nulo, ya que no todos los dispositivos han resuelto el problema.