Boa tarde Flávio tudo bem?
Acabei recorrendo a você porque acabei por não encontrar a solução para a minha dúvida. Eu queria saber como eu consigo inserir dois filtros no pipe. No caso eu fiz o filtro por descrição e fiz um filtro por id, com o código abaixo:
import { Pipe, PipeTransform } from '@angular/core';
import { Photo } from '../photo/photo';
@Pipe({ name: 'filterById' })
export class FilterByIdPipe implements PipeTransform {
transform(photos: Photo[], descriptionQuery: string) {
descriptionQuery = descriptionQuery.trim().toLowerCase();
if (descriptionQuery) {
return photos.filter(photo => photo.id.toString().includes(descriptionQuery));
} else {
return photos;
}
}
}
Porém ao aplicar os dois filtros no componente ap-photos só um filtro funciona por vez, ou faz os dois filtros resultando em não encontrar nada.
<ap-photos [photos]="photos | filterByDescription: filter | filterById: filter "></ap-photos>
import { NgModule } from '@angular/core';
import { PhotoListComponent } from './photo-list.component';
import { PhotosComponent } from './photos/photos.component';
import { LoadButtonComponent } from './load-button/load-button.component';
import { FilterByDescriptionPipe } from './filter-by-description.pipe';
import { CommonModule } from '@angular/common';
import { PhotoModule } from '../photo/photo.module';
import { CardModule } from 'src/app/shared/components/card/card.module';
import { FilterByIdPipe } from './filter-by-id.pipe';
@NgModule({
declarations: [
PhotoListComponent,
PhotosComponent,
LoadButtonComponent,
FilterByDescriptionPipe,
FilterByIdPipe
],
imports: [
CommonModule,
PhotoModule,
CardModule
]
})
export class PhotoListModule { }
Nesse caso a única solução seria criar um filtro único com os dois filtros? Ou tem como fazer essa filtragem no template em si direto?