createSelector - я делаю это неправильно - PullRequest
0 голосов
/ 04 февраля 2020

Я думал, что это правильно, но это не работает:

  selectClaimTypeById: ((any) => MemoizedSelector<any, ClaimType[]>) = (props: any) => createSelector (
    this.claimtypeSelector,
    (claimTypes: ClaimType[]) => claimTypes
      .filter ((claimType: ClaimType) => (claimType.claimType === props.claimType)
      ))

select (this.claimtypeSelector) правильно возвращает массив ClaimTypes. Я ДУМАЛ, что приведенный выше код вызывается как select (selectClaimTypeById, {demandId: id}) * , вернет отфильтрованный массив с одним типом Claim.

Возвращает запомненный функция

this.store
  .pipe (
    select (this.selectors.selectClaimTypeById, {claimType: id}),
    take (1))
  .subscribe (data => record = data);

запись = запомненная функция

Я явно что-то пропустил

Любая помощь?

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Селектор определен как функция, поэтому вы должны вызвать его:

this.store
  .pipe (
    select (this.selectors.selectClaimTypeById(id)),
    take (1))
  .subscribe (data => record = data);

Дополнительные примеры и пояснения см. Параметризованные селекторы

1 голос
/ 04 февраля 2020

Вы объявляете метод, который возвращает селектор с:

selectClaimTypeById: ... = (props: any) => createSelector(

Вероятно, это должно быть примерно так:

selectClaimTypeById: ... = createSelector(

Это ваш вариант использования в документах: https://ngrx.io/guide/store/selectors#using -selectors-с-реквизита

...