В операторе `pipe()` нужно передавать все операторы, которые вы хотите применить к потоку данных. Вы можете передать параметры в операторы с помощью аргументов функции внутри них. Вот как это может выглядеть в псевдокоде:
```typescript
import { pipe, filter, map } from 'rxjs';
function discardOddDoubleEven() {
return pipe(
filter((v) => !(v % 2)),
map((v) => v + v)
);
}
```
Использование этого оператора будет выглядеть так:
```typescript
this.productsService
.findAll()
.pipe(discardOddDoubleEven())
.subscribe((data: ProductInterface[]) => (this.products = data));
```
Вы также можете использовать операторы `filter`, `map` и `include` непосредственно в функции `pipe()`, без создания отдельной функции для оператора:
```typescript
import { pipe, filter, map } from 'rxjs';
this.productsService
.findAll()
.pipe(
filter((product) => product.name.toLocaleLowerCase().includes('deepcool')),
map((product) => ({ name: product.name, price: product.price * 2 }))
)
.subscribe((data: ProductInterface[]) => (this.products = data));
```
Обратите внимание, что операторы `filter`, `map` и `include` не являются стандартными операторами RxJS. Они могут быть определены в вашем коде или добавлены из других пакетов.