Наше веб-приложение загружает в хранилище NgRx значения, для которых в исходном состоянии установлено значение NULL. Я ищу способ красиво фильтровать ненулевые значения, потому что я постоянно вижу в компонентах
this.myValue = this.store.pipe(
select(mySelector),
filter(notNull),
);
// where
const notNull = (data) => data !== null;
И я считаю, что это дублирование кода, было бы здорово справиться с этим на уровне селектора. Но я также открыт для других решений.
Одна вещь, которую я попробовал, это кастом createSelector
:
import {createSelector, createSelectorFactory, defaultMemoize} from '@ngrx/store';
const isEqualOrNull = (a: any, b: any): boolean =>
a === b || b === null;
const createSelectorNotNull = createSelectorFactory((projectionFn) =>
defaultMemoize(projectionFn, isEqualOrNull));
К сожалению, это решение не будет обрабатывать начальные null
значения, только дальнейшие.
Есть ли хорошее решение этой, казалось бы, частой проблемы?