import {Pipe, PipeTransform} from '@angular/core'; import {Product} from "./product"; @Pipe({ name: 'productFilter' }) export class ProductFilterPipe implements PipeTransform { transform(value: Product[], filterText?: string): Product[] { filterText = filterText?filterText.toLocaleLowerCase(): null return filterText ? value.filter((p: Product) => p.name .toLocaleLowerCase().indexOf(filterText) !== -1) : value; } } TS2322: escriba 'cadena | null' no se puede asignar al tipo 'cadena | indefinido'.
El tipo 'null' no se puede asignar al tipo 'string | indefinido'.
y
TS2345: Argumento de tipo 'cadena | undefined' no se puede asignar a un parámetro de tipo 'string'.
El tipo 'indefinido' no se puede asignar al tipo 'cadena'.
Prueba con esto
import {Pipe, PipeTransform} from '@angular/core'; import {Product} from "./product"; @Pipe({ name: 'productFilter' }) export class ProductFilterPipe implements PipeTransform { transform(value: Product[], filterText?: string): Product[] { let pattern = filterText ? filterText.toLocaleLowerCase(): null; return pattern ? value.filter((p: Product) => p.name.toLocaleLowerCase().indexOf(pattern) !== -1) : value; } }Si no se pasa un texto de filtro a la función, entonces recibió ese error porque está tratando de asignar algo a indefinido.