Estoy tratando de filtrar una serie de usuarios, pero cuando hago clic en restablecer los datos no vuelven. Por favor, guíame sobre cómo puedo solucionar esto.
filterUsers(event:any) { this.users = this.users.filter(user => { return user.displayName.toLowerCase().includes(event.target.value.toLowerCase()); }) }¡Cualquier solución apreciada!
Estás asignando el resultado del filtro a la variable inicial. Como no proporciona ningún otro código, proporcionaré una demostración simple:
this.users = ['some', 'array', 'that', 'has', 'elements']; const initialValue = ['some', 'array', 'that', 'has', 'elements']; handleReset() { this.users = initialValue; }Después de haber filtrado su matriz, asegúrese de vincular la función 'handleReset' al botón de reinicio, que establecerá this.users en el valor inicial.
Nota: el método .filter() devuelve una matriz con elementos que pasan la condición de filtrado. Si ningún elemento pasa la prueba, se devuelve una matriz vacía.
Para obtener más documentación, consulte este enlace: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#return_value
Encontré una solución y creé una canalización personalizada para filtrar registros. esto funciona bastante bien
Tubo
@Pipe({ name: 'filterUser' }) export class FilterUserPipe implements PipeTransform { transform(value: any, args: string) { return value.filter((v:any) => { return v.displayName.toLowerCase().includes(args.toLowerCase()) }) } }archivo TS
filterUsers(event:any) { this.filterUser = event.target.value; }Archivo HTML
<mat-form-field class="search-filter"> <input matInput placeholder="Search Team Members..." (keyup)="filterUsers($event)"> </mat-form-field> <ng-container *ngFor="let user of users | filterUser:filterUser"> <mat-option [value]="user.uid">{{user.displayName}}</mat-option> </ng-container>Gracias a todos por sus sugerencias.