La librería ng2-search-filter es una herramienta diseñada para ecosistemas Angular (compatible con versiones 2, 4 y 5) que facilita la implementación de filtros de búsqueda mediante un "pipe" personalizado. Su propósito principal es permitir que los usuarios filtren colecciones de datos en tiempo real a través de campos de entrada, utiliznado TypeScript como lenguaje base para su lógica.
Proceso de instalación
Para integrar este módulo en un proyecto de Angular, el primer paso consiste en añadir la dependencia mediente un gestor de paquetes. Asegúrese de estar en la raíz de su proyecto antes de ejecutar los siguientes comandos:
# Uso de npm
npm install ng2-search-filter --save
# Uso de yarn
yarn add ng2-search-filter
Configuración en el módulo principal
Una vez instalada la librería, es necesario registrar el módulo Ng2SearchPipeModule dentro de la arquitectura de la aplicación, generalmente en el archivo app.module.ts. Esto permite que el pipe esté disponible en las plantillas HTML.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms'; // Necesario para ngModel
import { Ng2SearchPipeModule } from 'ng2-search-filter';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
FormsModule,
Ng2SearchPipeModule
],
bootstrap: [AppComponent]
})
export class AppModule { }
Implementación del filtro en componentes
Para poner en funcionamiento el buscador, se debe definir una variable que almacene el texto de búsqueda y una colección de objetos o cadenas que se desee filtrar. A continuación, se muestra un ejemplo de cómo estructurar la lógica y la vista:
Lógica del componente (app.component.ts)
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
criterioBusqueda: string = '';
coleccionDatos = [
{ id: 1, etiqueta: 'Desarrollo Frontend' },
{ id: 2, etiqueta: 'Arquitectura Cloud' },
{ id: 3, etiqueta: 'Ingeniería de Datos' },
{ id: 4, etiqueta: 'Seguridad Informática' }
];
}
Plantilla del componente (app.component.html)
En el archivo HTML, se vincula el campo de entrada con la variable de control mediante ngModel y se aplica el pipe filter dentro de la directiva *ngFor.
<div class="container">
<input
type="text"
[(ngModel)]="criterioBusqueda"
placeholder="Escriba para filtrar resultados..."
>
<ul>
<li *ngFor="let elemento of coleccionDatos | filter:criterioBusqueda">
{{ elemento.etiqueta }}
</li>
</ul>
</div>
Consideraciones técnicas comunes
- Compatibilidad de Tipos: El pipe
filterde esta librería realiza una búsqueda insensible a mayúsculas y minúsculas de forma predeterminada sobre las propiedades de los objetos en la lista. - Importación de FormsModule: Un error frecuente es olvidar la importación de
FormsModuleen el módulo principal, lo cual impide el funcionamiento de[(ngModel)]y, por ende, la reactividad del filtro. - Rendimiento: Para listas extremadamente largas, considere que los pipes de Angular se ejecutan en cada ciclo de detección de cambios, por lo que se recomienda monitorear el impacto en la interfaz de usuario.